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

JavaScript非原型链数组实例自定义方法myMethod运行逻辑咨询

myArray.myMethod 运行逻辑

先看完整实现代码:

const myArray = ['zero', 'one', 'two'];
// 直接给当前数组实例添加自定义方法
myArray.myMethod = function (sProperty) {
    console.log(arguments.length > 0 ? this[sProperty] : this);
};

运行逻辑分两种调用场景:

  • 无参数调用myArray.myMethod()时:方法内的this默认指向调用它的myArray实例,此时arguments.length为0,三元表达式返回this也就是数组本身,console.log会自动调用数组的toString()方法,输出zero,one,two
  • 传参调用myArray.myMethod(1)时:arguments.length为1,三元表达式返回this[sProperty]即myArray[1],对应数组的第二个元素one,最终输出one

是否用到prototype

该实现完全没有用到prototype。
这里是直接给myArray这个单独的数组实例挂载自定义属性,方法仅属于这个实例,其他数组实例无法访问myMethod。如果是基于原型实现的写法,应该是修改构造函数的原型对象,比如Array.prototype.myMethod = function() {},这种写法会让所有数组实例都能调用myMethod。

内容的提问来源于stack exchange,提问作者Deepak Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:09:04