美文网首页
web端笔记1

web端笔记1

作者: 古城凌三少 | 来源:发表于2019-07-11 14:59 被阅读0次

1.$(document).ready和window.onload区别

$(document).ready和window.onload都是在都是在页面加载完执行的函数,大多数情况下差别不大,但也是有区别的。

$(document).ready:是DOM结构绘制完毕后就执行,不必等到加载完毕。 意思就是DOM树加载完毕,就执行,不必等到页面中图片或其他外部文件都加载完毕。并且可以写多个.ready。

window.onload:是页面所有元素都加载完毕,包括图片等所有元素。只能执行一次。

所以,$(document).ready的执行时间要早于window.onload。并且可以写多个,

2.箭头函数与普通函数的区别

普通函数中的this指向函数被调用的对象,谁调用就是谁

所以箭头函数中的this是固定的,它指向定义该函数时所在的对象。

a.普通函数的this总是指向它的直接调用者。

b.在严格模式下,没找到直接调用者,则函数中的this是undefined。

c.在默认模式下(非严格模式),没找到直接调用者,则函数中的this指向window。

对于方法(即通过对象调用了该函数),普通函数中的this总是指向它的调用者。

对于一般函数,this指向全局变量(非严格模式下)或者undefined(严格模式下)。

new时才给this赋值

通过将this值赋给一个临时变量来实现。var that=this
通过bind()来绑定this。 function(){console.log(this.a),3000}.bind(this)

箭头函数中没有自己的this,arguments,new target(ES6)和 super(ES6)。

箭头函数中的this始终指向其父级作用域中的this。换句话说,箭头函数会捕获其所在的上下文的this值,作为自己的this值。任何方法都改变不了其指向,如call(), bind(),

apply()。在箭头函数中调用 this 时,仅仅是简单的沿着作用域链向上寻找,找到最近的一个 this 拿来使用,它与调用时的上下文无关。

1、箭头函数作为匿名函数,是不能作为构造函数的,不能使用new

// /2、箭头函数不绑定arguments,取而代之用rest参数…解决

// /3、箭头函数会捕获其所在上下文的 this 值,作为自己的 this 值

// /4、箭头函数当方法使用的时候没有定义this绑定

// /5、箭头函数没有原型属性

//  //箭头函数的this永远指向其上下文的 this,任何方法都改变不了其指向,如call(), bind(), apply()

//  //普通函数的this指向调用它的那个对象

3. “==” 和  “===”区别

* ==:隐式类型转换,数据类型不相同也会返回ture

* ===:数据类型不同,返回false

* 引用数据类型,

* ==,比较内存地址

4.正负小数,小数位数不限

var reg=/^(-)?\d+(\.\d+)?$/g;

5.call()和apply()共同的作用--->改变this的指向

区别:传参列表不同

call():需要将实参按照形参的样式(个数)传进去

apply():必须传的是arguments(参数数组)

apply和call区别,

call(), 需要把实参按照形参的样式(个数)传进去;

apply():必须传的是arguments(参数数组)

6.闭包

* 当内部函数被保存到外部时,形成闭包。

* return b;b函数被保存到外部,

* 闭包会导致原有作用域链不释放,造成内存泄漏。

* 本来a()执行完,aAO{}销毁,function b(){}跟着被销毁,

* 由于return b;b函数被保存到外部,aAO{}没有被销毁(不释放),

7.匹配子窜

块级元素?

    总是在新行上开始;

    高度,行高以及外边距和内边距都可控制;

    宽度缺省是它的容器的100%,除非设定一个宽度。

    它可以容纳内联元素和其他块元素

行内元素?

    和其他元素都在一行上;

    高,行高及外边距和内边距不可改变;

    宽度就是它的文字或图片的宽度,不可改变

    内联元素只能容纳文本或者其他内联元素

对行内元素,需要注意如下:

    设置宽度width 无效。

    设置高度height 无效,可以通过line-height来设置。

    设置margin 只有左右margin有效,上下无效。

    设置padding 只有左右padding有效,上下则无效。注意元素范围是增大了,但是对元素周围的内容是没影响的

es5继承

es6继承


深度拷贝

数组去重

// //map方法 不能中断遍历

var t=[1,3,9,10,20];

// for(var i in t){

//// document.write(i+"<br>");

//// document.write(t+"<br>");

// document.write(t[i]+"<br>");

// }

//

// //对数组中的每個元素都進行*2,打印結果數組为一個新數組。

// //返回一個新数组每个项,处理完后的结果组成的新数组,原数组不被影响

//不能中断遍历

//item:当前的选项

//index:索引

//array:当前数组

//return:返回每個项处理的結果

// var m= t.map(function(item,index,array){

// if (index === 3) {

//// item="56";//此处赋值之后还会被return改变

// return "56";//return返回的是每项的值,不是整个函数或数组,且此处赋值之后不会被后面的return改变,

// }

// return item*2

// });

// console.log(t);

// console.log(m);

////

//

/*

* forEach

* 返回underfined    不能中断遍历

* 按升序为数组中含有效值的每一项执行一次callback函数,

* 那些已删除(使用delete方法等情况)或者未初始化的跳过项被(但不包括那些只为underfined的项)

* 回调函数的参数:

* item:项的值

* index:索引

* array:数组对象本身

* */

// var arr=["54",true,456,NaN,{name:"张三"},null,["a","b","c"],undefined];

// arr.forEach(function(item,index,array){

// //item:是遍历的每个项

//// console.log(item); NaN, null, undefined,

//// console.log(typeof item);//"number", "Object", "undefined"

//// console.log(typeof(typeof item));//"string","string", "string"

// //NaN属于number类型

//// console.log(item==NaN);

//// console.log(item===NaN);//false

//// console.log(item===NaN);

//// console.log(item==="NaN");//false

//// console.log(item===null);//ture

//// console.log(item==="null");

//// console.log(item===undefined);//ture

//// console.log(item==="undefined");

// //index:项对应的索引

//// console.log(index);

// //array:数组对象本身

//// console.log(array);

// if(index===2){

// return;//跳过本次循环,进入下一层循环

// }

//// console.log(item);

//// console.log(array);

// });

// console.log(arr);

// for of循环, es6 遍历神器

/*

  *for of 可以跳出循环了, 而且语法相对原始的for循环来说简洁一些,

  * 支持return(函数里用), break, continue;

  * */

// var arr = [1, 2, 3];

// for (let i of arr) {

//   console.log(i);

//   if (i === 2) break;

// }

// for in 可以跳出循环

/*

*for … in 会遍历对象原型链上的属性,有时候是意想不到的错误。

* 解决方法: 判断是否自身属性即可, obj.hasOwnProperty()。

* */

var obj = {name: 'bob', age: 25, gender: 'male'};

obj.__proto__.test = 'test prototype';

for (let key in obj) {

//   console.log(key);

if (obj.hasOwnProperty(key))//判断是否是自己的

  console.log(obj[key]);

}

相关文章

  • 有道云笔记导出到notion

    1 有道云笔记批量导出word web端登录有道云笔记(https://note.youdao.com/web/[...

  • web端笔记1

    1.$(document).ready和window.onload区别 $(document).ready和win...

  • 有道云笔记导出到notion

    1 有道云笔记批量导出wordweb端登录有道云笔记(https://note.youdao.com/web/[h...

  • HTTP学习笔记

    HTTP学习笔记 1. web与网络基础 1.1使用HTTP协议访问Web 客户端(client, 浏览器brow...

  • centos 搭建nfs

    1.nas(存储端) 10.18.41.111 2.1web1 web2客户端 10.18.41.112 ...

  • Flask系列:工作流程

    这个系列是学习《Flask Web开发:基于Python的Web应用开发实战》的部分笔记 客户端——web 服务器...

  • Web服务端(Nginx、Tomcat)面试要点

    1 WEB服务端综述部分2 Nginx部分3 Tomcat部分 1 WEB服务端综述部分 1.1 什么是WEB服务...

  • day08 WEB

    WEB 的学习笔记 一 、网络的架构 client/server : 客户端/服务端 优点 : 交互性好...

  • 2018-06-22

    客户端与web交互的几种方法 1.web端通知客户端 (void)webViewDidFinishLoad:(UI...

  • Java Web开发实战经典学习过程笔记

    Java Web开发实战经典学习简单笔记 第一章Java Web开发简介 1.胖客户端程序指的是,当一个程序运行时...

网友评论

      本文标题:web端笔记1

      本文链接:https://www.haomeiwen.com/subject/svorkctx.html