Здравствуйте, я знаю, что прототип определен один раз и является общим для всех экземпляров объектов, но каждый привязан к контексту созданного нового экземпляра. Я также знаю, что он сохраняет память в сравнении с методом, определенным с this
внутри конструктора:Расход памяти классов статических методов Javascript
function Person(name) {
this.name = name;
// each instance will have it's own talk method
// so 500 * person instances = 500 * this.talk in memory
this.talk = function(str) {
console.log(this.name,"said",str);
};
}
// 500 * person instances = 1 instance of talk2 in memory
Person.prototype.talk2 = function(str) {
console.log(this.name,"said",str);
};
Однако я не уверен, что статические методы и потребление памяти.
// 500 * person instances = x * talk3 in memory ?
Person.talk3 = function(str) {
// code
};
Являются ли они прототипами или нет?
* "... но каждый привязан к контексту созданного нового экземпляра" * Ум, на самом деле, нет. Объект связан с прототипом, а не наоборот. –
«Связывание» устанавливается * во время разговора * в Javascript, а не при создании экземпляра. До тех пор этот метод является всего лишь свойством объекта (прототипа), который разделяет все экземпляры. – deceze
Да, я мог бы выразить свои мысли не так, как я сказал, что ты сказал – Syd