JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Javascript中向Object.prototype添加方法有什么好处和危险?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_696_0@
我知道五年前这是一个有争议的问题,但我想知道今天的 JavaScript是否有所改变.是否存在与扩展Object.prototype不兼容的主要现代库的现实示例?

我对假设“有人可能会在你想要使用的库中的迭代代码中写不好,也许,在未来,然后你可能会得到一个奇怪的错误”感兴趣

解决方法

是的,我记得jQuery的问题,这是一个较少侵入的库 – 例如:

> I tried to prototype a length() method to Object and broke jQuery – how?

我记得的另一个案例是有人向Object.prototype对象添加了一个加载函数,它导致了$().load事件的问题:

// DON'T DO THIS ! :)
Object.prototype.load = function () {};

​$(window).load(function () {
  alert('load event'); // never fired
});

here.

绝不推荐以这种方式扩充Object.prototype对象,因为这些属性将由大量对象继承 – 即使是某些宿主对象 – 并且如您所知,主要关注的是它们将被枚举for-in声明.

在ECMAScript 5中,现在存在一种更安全的方式,因为我们现在可以声明不可枚举的属性,例如:

Object.defineProperty(Object.prototype,'foo',{ value: 'bar' });

在属性描述符 – {value:’bar’}中 – 我们可以指定属性属性,对于Value Properties,如上例所示,我们可以指定可写属性和公共可配置属性(确定属性是否可以重新配置 – 属性更改 – 或删除.

我们还有可枚举属性,它确定属性是否将由for-in语句枚举.

如果我们不指定属性,默认情况下它们是false,描述符将如下所示:

{
  value: 'bar',writable: false,configurable: false,enumerable: false
}

大佬总结

以上是大佬教程为你收集整理的在Javascript中向Object.prototype添加方法有什么好处和危险?全部内容,希望文章能够帮你解决在Javascript中向Object.prototype添加方法有什么好处和危险?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。