js中的this,取决于函数的调用方式。
在作为普通函数调用时(类似:fn()),this指向全局或者undefined(严格模式);
在作为对象方法调用时,this指向该方法(创建对象或者构造函数都一致),比如obj.foo()此时foo里面的this指向obj,但是let foo = obj.foo; foo()里面的this又指向全局或者undefined了。此时的foo是被作为普通函数调用,而不再是对象方法;
使用call,apply,bind可以改变函数的this,但是不会改变函数的作用链,即闭包还是闭包,普通函数还是普通函数;
箭头函数没有this属性,里面的this,访问的是创建时封闭词法上下文中的this,会形成闭包
作为事件绑定时,addEventListner(),this将指向绑定事件的元素
作为一个内联事件处理函数,其最外层this指向该元素,即" "中, this === el,但是里面如果是函数,函数里面的this又取决于函数的调用方式了。
网友评论