2024年春招Web前端面试题,关于 JavaScript 中 this 的详细总结,金九银十旗开得胜

var foo = (() => this); // 接着上面的代码 // 作为对象的一个方法调用 var obj = {foo: foo}; console.log(obj.foo() === window); // true // 尝试使用call来设定this console.log(foo.call(obj) === window); // true // 尝试使用bind来设定this foo = foo.bind(obj); console.log(foo() === window); // true

【无论如何,foothis 被设置为他被创建时的上下文(在上面的例子中,就是全局对象)】

这同样适用于在其他函数内创建的箭头函数:这些箭头函数的 this 被设置为封闭的词法上下文的。

作为对象的方法


当函数作为对象里的方法被调用时,它们的 this 是调用该函数的对象

this 的绑定只受最靠近的成员引用的影响。在下面的例子中,我们把一个方法 g 当做对象 o.b 的函数调用。在这次执行期间,函数中的 this 将指向 o.b 。事实证明,这与他是对象 o 的成员没有多大关系,最靠近的引用才是最重要的。

o.b = { g: independent, prop: 42 } console.log(o.b.g())

原型链中的 this


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

var o = { f: function() { return this.a + this.b; } }; var p = Object.create(o); p.a = 1; p.b = 4; console.log(p.f()); // 5

在这个例子中,对象

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值