天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

慎用 somefunction.prototype 分析

復制代碼 代碼如下:
// code from jb51.NET
function Person(name) {
this.Name = name;
}
Person.prototype.SayHello = function() {
alert('Hello, ' + this.Name);
}
Person.prototype.SayBye = function() {
alert('Goodbye, ' + this.Name);
}

不過,有的時候,為了書寫以及維護的方便,我們會把公有方法的聲明寫到一個對象里,然后賦值給 Person.prototype,例如:
復制代碼 代碼如下:
// code from jb51.NET
function Person(name) {
this.Name = name;
}
Person.prototype = {
SayHello: function() {
alert('Hello, ' + this.Name);
},
SayBye: function() {
alert('Goodbye, ' + this.Name);
}
}

使用這種方式,在這個類具有大量公有方法的時候,就不需要維護許多的 Person 標識符,如果某一天這個類的名字需要改變,那么要改的地方只有兩個,一個是 function 的聲明,一個是 prototype 前面的標識符,如果是使用前一種方式的話,那么有多少個公有方法,就需要維護 N+1 個標識符了,雖然可以使用查找替換,但是從穩(wěn)定上來說,查找替換可能會引起一些錯誤,這增加了維護的成本。

這種方式雖然給我們的維護增加了便利,但也引發(fā)了另外一個隱藏的問題,就是類的 constructor 屬性丟失的問題。
復制代碼 代碼如下:
// code from jb51.NET
function Person1(name) {
this.Name = name;
}
Person1.prototype.SayHello = function() {
alert('Hello, ' + this.Name);
}
Person1.prototype.SayBye = function() {
alert('Goodbye, ' + this.Name);
}
// code from jb51.NET
function Person2(name) {
this.Name = name;
}
Person2.prototype = {
SayHello: function() {
alert('Hello, ' + this.Name);
},
SayBye: function() {
alert('Goodbye, ' + this.Name);
}
}
alert(new Person1('Bill').constructor);
alert(new Person2('Steve').constructor);

運行上面的測試代碼我們可以發(fā)現(xiàn),Person1 的 constructor 屬性為 Person1 類的構(gòu)造函數(shù),但是 Person2 的 constructor 屬性卻是 Object,那么在需要使用 constructor 屬性來判斷對象類型的時候,就會出現(xiàn)問題。
因此,在寫 JavaScript 類的時候,如果不需要使用 constructor 屬性來獲取對象的類型,那么個人比較傾向于使用第二種寫法,但是如果需要使用 constructor 屬性以實現(xiàn)自己的反射機制或 GetType 函數(shù)等等,那么就要使用第一種寫法。
當然,如果在實現(xiàn)自己反射機制或 GetType 函數(shù)時并不依賴 constructor 屬性,那么兩種寫法都是可以的了,例如額外維護一個成員變量,用于標識自身的類型等。也可以使用一些現(xiàn)成的JS框架,有一些框架已經(jīng)實現(xiàn)了JS中類的實現(xiàn)等,例如 js.class,這就看個人需要進行取舍了。

JavaScript技術(shù)慎用 somefunction.prototype 分析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久精品一卡二卡三卡四卡视频版 | 少妇高潮惨叫久久久久久电影 | 老头操美女| 日本一卡二卡三卡四卡无卡免费播放 | 99视频免费看 | 黄色小说在线 | 亚洲国产剧情中文视频在线 | 亚洲AV久久无码精品热九九 | 国产 日韩 欧美 高清 亚洲 | 亚洲视频在线免费看 | 黄色软件色多多 | 国产WW久久久久久久久久 | 男女肉大捧进出全过程免费 | 国产精品久久久久久久人人看 | 四虎影视永久无码精品 | 边做边爱播放3免费观看 | 动漫美女人物被黄漫在线看 | 精彩国产萝视频在线 | 花蝴蝶高清影视视频在线播放 | 泡妞高手在都市免费观看 | 亚洲呦女专区 | 国产黄大片在线视频 | 国产又色又爽又刺激在线播放 | 99久久久免费精品国产 | 日韩精品一区二区中文 | 亚洲 欧美 视频 手机在线 | 国产69精品久久久久APP下载 | 年轻的女教师2017韩国在线看 | 久久九九有精品国产23百花影院 | 久久夜色精品国产亚州AV卜 | 亚洲无遮挡无码A片在线 | 护士的下面又湿又紧10P | 成人免费观看www视频 | 牛牛超碰 国产 | 女教师苍井空体肉女教师S242 | adc我们的永久网址 adc网址在线观看 | 在线看无码的免费网站 | 晚夜免费禁用十大亏亏 | 僵尸女av| 日本护士性生活 | 俄罗斯破处 |