您的位置:首页 > Web前端 > JavaScript

C4 - Item 32 永远不要修改__proto__

2017-07-12 20:43 239 查看

译文

特别的__proto__属性提供了Object.getPrototypeOf方法所没有的额外功能:修改对象的原型链。虽然看似无害,但是这个隐形的功能是必须要避免使用的。一个非常明显的原因就是:当你要通过这种方式修改原型链的时候,这种方式却不被支持。

另外的原因还有性能关系。所有的现在JavaScript引擎都对设置和获取对象属性进行了着重的优化,因为这属于是最常用的一些操作。这些优化完全基于引擎对对象结构的认知。当改变了对象的内部结构之后,在对象本身以及其原型链上添加和删除属性时,这些优化都将是无效的。修改对象本身的继承结构是极具破坏性的。

但是避免修改__proto__最重要的原因是要维护我们可以预测的行为。对象的原型链通过其属性和属性的值来定义行为。修改对象的原型链就像是给它做了一个大脑移植手术:交换了整个继承关系的层级。可能在某些例外情况下,这样的做法是有帮助的,但是最为明智的选择还是需要保证继承层级的稳定性。

想要为对象自定义原型链,可以使用ES5当中的Object.create方法。

Things to remember

永远不要修改__proto__属性。

使用Object.create方法实现继承。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐