Я всегда устанавливал свойства со значением типа в прототипе объекта, так как это останавливает их при инициализации каждый раз, когда объект создается.
С тех пор я выполнил некоторую отладку и обнаружил, что если значение свойства этого прототипа когда-либо изменится, то новому объекту присваивается новое свойство, а прототип остается на месте.
var o = function () {
};
o.prototype.x = 0;
o.prototype.setX = function(x) {
this.x = x;
};
var obj = new o();
obj.setX(1);
console.log(obj);
// o {x: 1, x: 0, setX: function}
Итак, мой вопрос: знаете ли вы, что значение свойства прототипа, вероятно, изменится, есть ли какой-либо реальный выигрыш в его установке в прототипе и извлечь выгоду из того, что он не должен быть инициализирован при создании объекта?
То, что я имею в виду, когда оно изменяется на другое значение, новое значение должно быть присвоено в любом случае существующему объекту, теряющему первоначальное преимущество при установке его в прототипе в первую очередь! Кроме того, теперь это означает, что у вас есть 2 свойства для одного и того же объекта в объекте и один в прототипе.
Он говорит разработчикам Google, что это способ сделать это, но я не уверен.
Когда должно быть задано значение свойств типа в прототипе и есть ли реальное увеличение производительности, когда вы знаете, что значение все равно изменится?