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

如何让JavaScript类实例的方法提取后仍绑定对应实例?

解决方案

要实现需求,核心是让每个实例的info方法成为绑定了自身的函数,同时保证提取后的方法引用与实例上的info完全一致。具体实现如下:

  1. 创建Vehicle实例后,对实例的info属性执行绑定操作:
const v = new Vehicle('Toyota', 'Camry', 178);

// 仅在该区域编写代码
v.info = v.info.bind(v);

效果验证

  • 直接调用实例方法:v.info() → 输出该实例的正确信息
  • 提取方法后单独调用:
    const info = v.info;
    info(); // 同样输出该实例的正确信息
    
  • 验证引用一致性:info === v.info → 返回true

原理说明

  • 原Vehicle类的info是挂载在原型上的普通方法,直接提取调用会丢失正确的this指向;
  • 通过bind(v)为当前实例生成一个绑定了自身上下文的新函数,并将这个函数赋值给实例自身的info属性;
  • 此时实例的info属性会覆盖原型上的同名方法,后续无论是直接调用还是提取后调用,this都会固定指向该实例,同时提取的变量与实例的info指向同一个函数引用。

内容的提问来源于stack exchange,提问作者Selim Choueiter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:32:48