猿问

为什么是Object.defineProperty()而不是this.defineProperty

我正在研究一个JavaScript项目,只是想知道为什么对象实例不继承defineProperty()和其他方法,而不是必须调用超类(superobject?)Object方法。


我查看了MDN文档,实际上有“非标准”属性方法。


但那些被弃用了。为什么要采取这些Object方法呢?


在我看来,像是instance.defineProperty(...)更好的东西Object.defineProperty(instance, ...)。我也会对其他一些Object方法说同样的话。


守着星空守着你
浏览 703回答 3
3回答

眼眸繁星

有趣。到目前为止,我提出的唯一原因是人们喜欢重写原型并将此方法“隐藏”,这样可以帮助您避免一些错误。特别是因为方法名称很好,因为比例如更容易被重写__defineGetter__。似乎许多功能都依赖于此功能(链接),因此在此上下文中使其更加全局和安全是有意义的。

江户川乱折腾

这样做是为了避免冲突 - 记住,每个方法Object.prototype都是每个用户定义对象中的一个方法。想象一个你想要一个自定义方法的对象defineProperty- 当Object.defineProperty它在原型上时会完全破坏它。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答