我正在研究一个JavaScript项目,只是想知道为什么对象实例不继承defineProperty()和其他方法,而不是必须调用超类(superobject?)Object方法。我查看了MDN文档,实际上有“非标准”属性方法。但那些被弃用了。为什么要采取这些Object方法呢?在我看来,像是instance.defineProperty(...)更好的东西Object.defineProperty(instance, ...)。我也会对其他一些Object方法说同样的话。
3 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
有趣。到目前为止,我提出的唯一原因是人们喜欢重写原型并将此方法“隐藏”,这样可以帮助您避免一些错误。特别是因为方法名称很好,因为比例如更容易被重写__defineGetter__。
似乎许多功能都依赖于此功能(链接),因此在此上下文中使其更加全局和安全是有意义的。
江户川乱折腾
TA贡献1851条经验 获得超5个赞
这样做是为了避免冲突 - 记住,每个方法Object.prototype都是每个用户定义对象中的一个方法。
想象一个你想要一个自定义方法的对象defineProperty- 当Object.defineProperty它在原型上时会完全破坏它。
添加回答
举报
0/150
提交
取消