Javascript 向对象原型添加自定义函数

Javascript 向对象原型添加自定义函数,javascript,Javascript,我想知道如何使用prototype向数组对象添加自定义函数 我调用了我的函数get。get获取一个索引,并从具有该索引的数组中返回元素。我知道这是毫无意义的,但我把它用于教育目的 这就是使用它的感觉 常数a=['1','2','3'] a、 get(2)--->返回“3” 这就是我尝试过的 Array.prototype.get = index => { return this[index]; }; let a = ['1','2' ,'3']; console.log(a.g

我想知道如何使用prototype向数组对象添加自定义函数

我调用了我的函数get。get获取一个索引,并从具有该索引的数组中返回元素。我知道这是毫无意义的,但我把它用于教育目的

这就是使用它的感觉

常数a=['1','2','3']

a、 get(2)--->返回“3”

这就是我尝试过的

Array.prototype.get = index => {
    return this[index];
};

let a = ['1','2' ,'3'];

console.log(a.get(1)); 

这会向我返回未定义。

通过使用箭头函数,您无法绑定“This”,因此在原型的上下文中,这等于“window”

试试这个:

Array.prototype.get = function(index){
    return this[index];
};

我强烈建议您不要扩展/覆盖本机JavaScript内部。这是一种危险的做法,有很多原因,将来肯定会花很多钱,这发生在几年前著名的JS框架之一Prototype上:

2010年4月,博客作者Juriy‘kangax’Zaytsev(Prototype Core的)详细描述了猴子将新方法和属性修补到W3C DOM定义的对象中可能会出现的问题。[5]这些想法与雅虎在2010年3月发表的观点相呼应!开发商Nicholas C.Zakas总结如下:

  • 跨浏览器问题:主机对象不受规则约束,不符合IE DOM行为等
  • 名称冲突的机会
  • 性能开销

@VLAZ谢谢你Bosso我试着退了这个。它不返回窗口对象,我认为这不等于箭头函数中的窗口。它返回一个空对象instead@Kevin.a在您的函数中,
这个
引用了声明函数的上下文,我可以想象它是
窗口
。虽然我同意这一点,但它并没有真正试图回答这个问题。如果你想阻止OP的要求,那当然没关系,但是作为一个答案,它至少应该提供一个替代方案。在目前的状态下,这更适合作为评论(可能是文章的链接而不是引用)。。。请参阅“更多信息”!我知道。我是说一般警告应该是评论而不是回答,因为你没有试图回答被问到的问题。