什么是setPrototypeOf对新对象的性能影响?

Jov*_*van 8 javascript ecmascript-6

MDN暗示使用.setPrototypeOf()将对代码的未来性能产生不良影响.

我还读了一些关于为什么改变对象的[[Prototype]]会降低性能的问题.但是没有一个答案真正解释了在后台发生的事情.所以我想知道这是否也适用于新的对象.

特别是我真的喜欢做这样的事情:

var MyPrototype = {
    method1 : function(){...},
    method2 : function(){...},
    ...
};

var newObject = Object.setPrototypeOf({
    property : 1,
    property2 : 'text'                 
}, MyPrototype);
Run Code Online (Sandbox Code Playgroud)

不幸的是你不能这样做,Object.create因为它不接受普通的对象文字.

我的使用是否setPrototypeOf也降低了执行JS引擎的性能?

Ami*_*mit 6

如果您担心(显然您应该......)使用的性能影响Object.setPrototypeOf(),但希望保持对象创建语法与代码的结构类似,请尝试以下方法:

var MyPrototype = {
    method1 : function(){...},
    method2 : function(){...},
    ...
};

var newObject = Object.assign(Object.create(MyPrototype), {
    property : 1,
    property2 : 'text'                 
});
Run Code Online (Sandbox Code Playgroud)