2019-09-11 call、apply、bind、this

2019-10-07  本文已影响0人  枫叶落尽

this:well
https://www.jianshu.com/p/d647aa6d1ae6

我的理解

this指代当前调用上下文,我们可以理解为在全局环境作用域链,即最顶层作用域链中,定义了this变量,它指向当前的调用对象,window,可以理解为最顶层其实就是一个window对象。当在一个对象内部时,它不改变作用域链,所以在字面量对象内的this依旧指向window,但在函数内部就不一样了,当函数被调用时,它的作用域链是动态生成的,它会在被调用时生成一个局部变量对象,将这个对象放到作用域链末端,形成完整的作用域链。这个局部变量对象就会包括一个 this 变量,那么显然的,这个this会被先找到,所以直接在顶层调用函数,this在严格模式其实是undefined,因为它虽然被定义了,但未被赋值,当然,在非严格模式下,值为undefined的this会被赋值为window。那局部变量对象中的this何时会被赋值呢?当函数被一个对象作为方法调用时,此时this被指向这个对象。也即我们一般所说的this指向调用对象。

bind:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

this MDN上的解说:
当前执行代码的环境对象

A property of an execution context (global, function or eval) that, in non–strict mode, is always a reference to an object and in strict mode can be any value.

原型链中的 this

对于在对象原型链上某处定义的方法,同样的概念也适用。如果该方法存在于一个对象的原型链上,那么this指向的是调用这个方法的对象,就像该方法在对象上一样。

call、play
https://www.imooc.com/wenda/detail/394775

没有看:
https://blog.csdn.net/theanarkh/article/details/55040306
https://www.jianshu.com/p/57b7a1a0e428
https://www.cnblogs.com/nana-share/p/9469455.html

上一篇下一篇

猜你喜欢

热点阅读