You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中能否使用多个this绑定?对象属性与this取值问题

JavaScript中的this绑定与对象属性问题解析

咱们先从你最困惑的第一个例子说起:

为什么第一个例子输出全是"bad"?

你创建whiteRabbit时写了两次type属性:

let whiteRabbit = {type: "white", speak, type: "bad"};

在JavaScript里,对象中重复的属性键会被后面的完全覆盖。也就是说,这个对象最终只会保留最后一个type: "bad",之前的type: "white"直接被丢弃了。当你调用whiteRabbit.speak()时,this指向这个对象,所以this.type只能拿到"bad",输出自然全是bad啦。

能不能给一个函数绑定多个this?

答案是不行。一个函数在执行时,this的指向是唯一的——它由函数的调用方式决定(这里是作为对象方法调用,this就指向调用它的那个对象)。你没法让同一个函数里的两个this分别指向不同的上下文,更没法通过多个this去获取对象里被覆盖的同名属性,因为那些重复的属性根本没被保留下来。

你修改后的方案为什么能生效?

当你把第二个type改成type2后:

let whiteRabbit2 = {type: "white", speak, type2: "bad"};

这时候对象里有两个独立的属性键type和type2,各自对应"white"和"bad"。在speak函数里分别通过this.type和this.type2访问,自然就能拿到你想要的两个不同值,输出也就符合预期了。

小总结

  • 如果需要在对象里存储多个不同的标识,一定要用不同的属性键名,别用重复键,不然前面的属性会被后面的覆盖。
  • 一个函数执行时只能有一个this指向,但只要合理设计对象的属性结构,完全可以实现你想要的多值获取效果。

内容的提问来源于stack exchange,提问作者Richard Rublev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:07:34