0
我的問題不在於對象的成員和原型成員之間的差異。我明白那個。我認爲它類似於C#對象成員和類中的靜態成員。原型對象和構造函數上的成員之間有什麼區別?
我的問題是關於原型對象上的構造函數和上成員之間的差異。與C#相比,它們都是「靜態」的。那麼區別是什麼呢?我只觀察到,可以直接在實例上或在Constructor.prototype上調用原型成員的相同方式。構造函數成員只能在構造函數中調用。 何時使用哪種方法?
爲了說明這一點,假設我需要人數。
實施例使用構造函數成員:
function Person() {
Person.countOfCreatedPersons = (Person.countOfCreatedPersons || 0) + 1;
}
Person.Count = function() {
return Person.countOfCreatedPersons;
}
var p = new Person();
alert(Person.Count());
實施例使用原型成員:
function Person() {
Person.prototype.countOfCreatedPersons = (Person.prototype.countOfCreatedPersons || 0) + 1;
}
Person.prototype = {
Count: function() {
return this.countOfCreatedPersons;
}
}
var p = new Person();
alert(Person.prototype.Count()); // or p.Count()
可能重複的[類/靜態方法在JavaScript?](http://stackoverflow.com/questions/7694501/class-static-method-in-javascript) – zzzzBov