Я пытаюсь подражать статическим свойствам в javascript. В нескольких местах упоминалось, что class.prototype.property будет статическим по всем объектам, наследующим от класса. Но мой POC говорит иначе. Пожалуйста, посмотрите:
Использование класса Class.prototype.property
//Employee class
function Employee() {
this.getCount = function(){
return this.count;
};
this.count += 1;
}
Employee.prototype.count = 3;
var emp = [], i;
for (i = 0; i < 3; i++) {
emp[i] = new Employee();
console.log("employee count is "+ emp[i].getCount());
}
/*Output is:
employee count is 4
employee count is 4
employee count is 4*/
Мой вопроС# 1: Если это должно быть статичным, то не должно быть значения count 4,5,6 и т.д., так как все объекты имеют одну и ту же переменную счета?
Затем я сделал еще один POC с Class.prototype, и я думаю, что это статично.
Использование класса Class.property
//Employee class
function Employee() {
this.getCount = function(){
return Employee.count;
};
Employee.count++;
}
Employee.count = 3;
var emp = [], i;
for (i = 0; i < 3; i++) {
emp[i] = new Employee();
console.log("employee count is "+ emp[i].getCount());
}
/*Output is:
employee count is 4
employee count is 5
employee count is 6*/
Мой вопрос №2: Нигде я не видел, как class.property используется напрямую. Как именно статические переменные сделаны в javascript, имея в виду мой вышеприведенный код?
Или я закодировал здесь что-то не так? Это не правильное восприятие?