简web

理解js中的this

2018-01-29  本文已影响0人  吴豆腐

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又取决于函数的调用方式了。

上一篇下一篇

猜你喜欢

热点阅读