this指向的7个规则,腾讯课堂考拉老师哪里学到的,收益颇深;
规则:
1.函数直接用 圆括号() 运行,上下文是window对象;
fn(); // 此时this指向的是window;
2.对象打点调用函数,上下文是这个对象;
obj.fn(); // 此时this指向的是obj;
3.数组(类数组对象)中枚举出函数,上下文是这个数组(类数组对象);
// arr[index](); // 这时候this指向的是arr;
function fun1(fn){
arguments[0](3,4); // arguments[] = fun2 运行时fun2的this指向arguments;
}
function fun2(){
alert(this.length); // 这时候这个this指向的是fun1 的arguments
}
fun1(fun2,4,5,6,7); // 5
4.定时器调用函数,上下文是window
5.被当做事件处理函数时,上下文是触发事件的DOM元素
dom.onclick = function(){
alert(this.innerHTML) // 此时this指向的是dom
}
6.用new调用函数,上下文是函数内创建的空白对象;
用new调用函数会经过4步;
①创建一个空对象(这一步很隐秘,看不到)
②将this绑定到这个秘密创建的空对象中
③执行语句
④返回对象
7.用apply、call、bind执行上下文;
fn.apply(obj,[a,b,c,d]);
fn.call(obj,a,b,c,d);
fn.bind(obj);
网友评论