Всем известны такие примеры из множества источников:
function Human(name) {
this._name = name;
Human.prototype.sayName = function() {
alert('My name is '+ this._name);
}
}
Вроде бы логично и красиво что расширение прототипа инкапсулировано внутри функции-конструктора. Но получается что всякий раз при создании экземпляра будет выполняться лишнее присвоение одной и той же функции в прототипе.
var alex = new Human('Alex');
var john = new Human('John');
...
Правильно ли я предполагаю, что интерпретатор каким-то образом умеет оптимизировать и пропускать такие действия? И если нет, то почему бы не делать так?
Human.prototype.sayName = function() {
alert('My name is '+ this._name);
}
function Human(name) {
this._name = name;
}