Вы можете сделать это, но то, что беспорядок. height
и weight
имеют два разных значения; все экземпляры A
будут возвращаться к этому начальному a
. Что вы пытаетесь достичь?
Edit:
Проблема с использованием прототипов заключается в том, когда он будет создан, нет никакого функционального контекста относится к конкретному примеру (по той очевидной причине, что прототип создается только один раз, как правило, до того, . экземпляр класса без контекста, там нет места, чтобы спрятать переменные частную к примеру, что я предпочитаю, чтобы создать методы в строительстве:.
var A = function(height, weight) {
this.height = function() { return height; };
this.weight = function() { return weight; };
};
Используйте функцию, чтобы создать сам прототип создает общий (частное , статический) контекст для все экземпляров. Вы даже можете смешивать понятие:
var A = function(height, weight) {
this.__init__(height, weight);
};
A.prototype.__init__ = (function() {
// any variables declared here are private and static
var number_of_instances = 0;
return function(height, weight) {
// any variables declared here are private and NOT static
// as always, anything added to this are public and not static
this.getNumberOfInstances = function() {
return number_of_instances;
};
this.height = function() { return height; };
this.weight = function() { return weight; };
number_of_instances++;
};
})();
Я не в восторге от перезаписывания всего прототипа, это означает, что вы не можете изменить, чтобы наследовать от другого класса.
Что вы пытаетесь достичь? –
Возможность наследования свойств от конструктора, когда мне это нужно, без использования метода call/apply. – domscripter