JavaScript中如何为对象实例数组的每个实例添加方法?
实现方法
根据你的需求范围,有两种非常直接的实现方案:
- 仅给数组
x内的100个实例加方法,不影响其他同类型实例
直接遍历数组逐个挂载即可,注意不要用箭头函数定义方法,否则会丢失this对当前实例的指向:
这种写法只会给当前数组里存在的实例绑定方法,后续用同一个构造函数/类新建的实例不会携带这个方法。x.forEach(item => { item.customMethod = function(params) { // 方法内部通过this即可访问当前实例的属性、调用原有方法 // 此处写具体业务逻辑 } }) - 给所有同类型实例(包含数组
x内的实例、后续新建的同构造函数实例)统一加方法
不需要遍历数组,直接修改对应构造函数的原型是性能最优的方案,所有实例会共享这个方法,不会重复占用内存:// 从数组已有实例上取到对应构造函数,不需要手动回溯原构造函数的定义 const InstanceConstructor = x[0].constructor InstanceConstructor.prototype.customMethod = function(params) { // 方法逻辑同上,this指向调用该方法的具体实例 // 此处写具体业务逻辑 }
小提示:挂载自定义方法前建议先判断是否存在同名属性/方法,避免覆盖实例原有的原生方法或业务逻辑,引发不必要的bug。
内容的提问来源于stack exchange,提问作者Josh Owens
相关产品推荐
相关产品推荐

