相关疑难解决方法(0)

为什么改变对象的[[prototype]]对性能有害?

标准 setPrototypeOf函数的MDN文档 以及非标准属性: __proto__

强烈建议不要改变对象的[[Prototype]],无论如何实现,因为它非常慢并且不可避免地减慢了现代JavaScript实现中后续执行的速度.

使用Function.prototype添加属性是添加成员函数JavaScript类的方式.然后如下所示:

function Foo(){}
function bar(){}

var foo = new Foo();

// This is bad: 
//foo.__proto__.bar = bar;

// But this is okay
Foo.prototype.bar = bar;

// Both cause this to be true: 
console.log(foo.__proto__.bar == bar); // true
Run Code Online (Sandbox Code Playgroud)

为什么foo.__proto__.bar = bar;不好?如果它的坏不是Foo.prototype.bar = bar;那么糟糕?

那么为什么会出现这样的警告:它非常缓慢并且不可避免地减慢了现代JavaScript实现中后续执行的速度.当然Foo.prototype.bar = bar;不是那么糟糕.

更新也许通过突变他们意味着重新分配.见接受的答案.

javascript performance prototype prototype-chain

54
推荐指数
1
解决办法
3万
查看次数