[英]Using prototype JavaScript - best practice
目前我正在開發一個我們正在編寫面向對象的JavaScript的項目。 在這個項目中,我看到了兩種不同的定義類的方法:
1:在原型上一次聲明函數
My.Namespace.ClassName = function(param1, param2) {
this.member1 = param1;
this.member2 = param2;
};
My.Namespace.ClassName.prototype = {
myFunction1: function() {
return this.member1 + " " + this.member2;
},
myFunction2: function(param1) {
this.member3 = paraml;
}
};
2:准備原型上的每個功能
My.Namespace.ClassName = function(param1, param2) {
this.member1 = param1;
this.member2 = param2;
};
My.Namespace.ClassName.prototype.myFunction1 = function() {
return this.member1 + " " + this.member2;
};
My.Namespace.ClassName.prototype.myFunction2 = function(param1) {
this.member3 = paraml;
};
基於兩個給定的示例,JavaScript的行為方式有什么不同,還是僅僅是樣式差異?
就個人而言,我沒有看到任何行為差異,但我覺得必須有一個微妙的差異,我目前缺少。
除此之外。 我想知道這是一種常見的做法,還是有更好的方法來定義類。
有一個微妙的區別。 在第一種方法中,當你覆蓋原型時,那里有一個現在丟失的屬性。 這是constructor
,它指向您的函數。 構造函數允許您重新創建它的對象類型。
您可以輕松地將其取回,因此可以通過手動設置它來使用第一種方法:
My.Namespace.ClassName.prototype = {
myFunction1: function() {
return this.member1 + " " + this.member2;
},
myFunction2: function(param1) {
this.member3 = paraml;
},
constructor: My.Namespace.ClassName
};
另見: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.