gpt4 book ai didi

javascript - 扩展 Object.prototype JavaScript

转载 作者:IT王子 更新时间:2023-10-29 03:14:53 26 4
gpt4 key购买 nike

我不是在问这是否可以:

Object.prototype.method = function(){};

几乎每个人都认为这是邪恶的,因为它搞砸了for(var i in obj)

真正的问题

忽略

  • 不称职的浏览器(不支持Object.defineProperty的浏览器)
  • 属性冲突或覆盖的可能性

假设您有一些难以置信有用的方法,这是否被认为是错误的/不道德的?

Object.defineProperty(Object.prototype, 'methodOnSteriods',{
value: function(){ /* Makes breakfast, solves world peace, takes out trash */ },
writable: true,
configurable: true,
enumerable: false
});

如果您认为上述内容不道德,他们为什么要首先实现该功能?

最佳答案

2021 年更新

尽管这是公认的答案,但 10 年的经验告诉我这不是最好的主意。几乎任何可以避免污染全局范围的事情都是一件非常非常好的事情。

下面的原始答案,为了后代,因为堆栈溢出不会让我删除已接受的答案。


2011 年的原始答案

如果它在您的目标环境中工作,我认为它很好。

我还认为原型(prototype)扩展偏执狂被夸大了。只要您像优秀的开发人员一样使用 hasOwnProperty() 就没问题。最坏的情况是,您在别处重载该属性并丢失该方法。但如果你这样做,那是你自己的错。

关于javascript - 扩展 Object.prototype JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com