- 递归调用arguments.callee();
- caller和callee:arguments.callee返回当前正在执行的函数,function.caller返回函数的调用体所在函数。
- 变量和函数提升:
- 01、在使用函数表达式方式创建函数(var func = function(){})的时候,整个函数表达式并不会进行提升,只会对var声明的变量提升;
- 02、预处理的时候,同名的函数都会进行提升,但是后面的会覆盖掉前面的;
- 03、如果出现变量和函数同名的情况,则在进行提升的时候,只会提升函数到当前作用域顶端而忽略变量的提升操作。
- 关于call和apply:
- 01、call:对象a要调用对象b中的c方法时:b.c.call(a,d,e,...);d,e,...指传入b中的实参;并且把b中的this指向a。
- 02、apply:b.c.apply(a,[d,e,...]);不需要更改this指向时a写成null,call同。
- 03、apply的功能和call一模一样,但是只有一点不一样:Call的传参是平铺的,Apply是把所有参数放在一个数组里面的传递的。
- splice(a,b,c)方法中a指要操作的位置,b指从a开始向后删除几个,c指要添加到位置a的东西。c省略时指删除;
- split:把字符串切割为数组;
- slice() 方法可从已有的数组中返回选定的元素,返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
- 以下形成一个链式的结构,称之为原型链:
- ① 每个构造函数都有原型对象
- ② 每个对象都有自己的构造函数
- ③ 每个构造函数的原型都是一个对象
- ④ 那么这个构造函数的原型对象也有自己的构造函数
- ⑤ 那么这个构造函数的原型对象的构造函数也有自己的原型对象
- 原型链中的属性搜索原则:
- 当访问某个对象的成员的时候,会先在自身中查找,如果找到则直接使用
如果在自身中没有找到,则去当前创建当前对象的构造函数的原型对象中查找,如果找到了则直接使用
如果在该原型对象中没有找到,则继续查找原型对象的原型对象(创建该原型对象的构造函数所对应的原型对象),如果找到则直接使用
如果在原型对象的原型对象中也没有找到,则继续向上搜索....
直到Object的原型对象,若还是没有,则返回undefined(属性)或报错(方法)。
- 设置继承:
SubClass.prototype = new SuperClass();
SubClass.prototype.constructor = SubClass;
- 在javaScript中,打印时会调用toString函数,相加计算会调用valueOf函数。
- 生成图像占位符:
<img src=imgSrc>
imgSrc="http://placehold.it/50x50"
- each方法中的this应该是value;
- each是jQuery的方法(可以遍历真数组, 也可以遍历伪数组, 以及可以遍历对象(fn(k,v)));
- map是jQuery的方法(可以遍历真数组, 也可以遍历伪数组, 以及可以遍历对象(fn(v,k)));
- forEach是js方法(只能遍历真数组(fn(v,k));