你好,我知道一個原型被定義了一次,並且是所有對象實例通用的,但是每個綁定到創建的新實例的上下文。我也知道它可以節省內存相較於在構造函數中使用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