var name = 'window'
var person1 = {
name: 'person1',
foo1: function () {
console.log(this.name)
},
foo2: () => console.log(this.name),
foo3: function () {
return function () {
console.log(this.name)
}
},
foo4: function () {
return () => {
console.log(this.name)
}
}
}
var person2 = { name: 'person2' }
// person1.foo1(); // person1(隐式绑定)
// person1.foo1.call(person2); // person2(显示绑定优先级大于隐式绑定)
// person1.foo2(); // window(不绑定作用域,上层作用域是全局,person只是定义了一个对象,并不会产生作用域)
// person1.foo2.call(person2); // window 箭头函数特殊 向上层作用域找
// person1.foo3()(); // window(独立函数调用) person1.foo3()拿到了return出来的函数,再调用属于独立调用return出来的这个函数
// person1.foo3.call(person2)(); // window(独立函数调用)person1.foo3.call(person2)拿到的函数进行的是独立函数的调用
// person1.foo3().call(person2); // person2(最终调用返回函数式, 使用的是显示绑定)
// person1.foo4()(); // person1(箭头函数不绑定this, 上层作用域this是person1)foo4: function ()的作用域是person1
// person1.foo4.call(person2)(); // person2(上层作用域foo4: function ()被显示的绑定了一个person2)
// person1.foo4().call(person2); // person1(上层找到person1)箭头函数不被call绑定 还是上层作用域this是person1(foo4: function ()的作用域是person1)
javaScript中this题
最新推荐文章于 2022-08-19 17:12:09 发布
本文深入探讨了 JavaScript 中的 this 指针在不同场景下的绑定规则,包括函数调用、显示绑定、箭头函数以及闭包等。通过示例代码解析了 foo1 到 foo4 函数中 this 的指向变化,揭示了函数调用方式对 this 的影响。理解 this 的绑定对于编写正确的 JavaScript 代码至关重要。
摘要由CSDN通过智能技术生成