The MDN hints that using .setPrototypeOf()
will have a bad influence on the future performance of your code.
I also read a few Questions about why changing the [[Prototype]] of an object will lower the performance. But none of the answers really explained whats going on in the background. So I wonder if this also applies for new Objects.
In particular I really like to do things like this:
var MyPrototype = {
method1 : function(){...},
method2 : function(){...},
...
};
var newObject = Object.setPrototypeOf({
property : 1,
property2 : 'text'
}, MyPrototype);
Unfortunately you can't do this with Object.create
since it doesn't accept a plain object literal.
Does my use of setPrototypeOf
also decrease the performance of the executing JS engine?
If you fear (as apparently you should..) the performance impact of using Object.setPrototypeOf()
, but want to keep your object creation syntax similar to how your code is structured, try this:
var MyPrototype = {
method1 : function(){...},
method2 : function(){...},
...
};
var newObject = Object.assign(Object.create(MyPrototype), {
property : 1,
property2 : 'text'
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With