国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

JavaScript 常見錯(cuò)誤七:原型繼承問題

2021-09-18 15:59 更新

很大一部分的js開發(fā)者都不能完全掌握原型的繼承問題。下面具一個(gè)例子來說明:

BaseObject = function(name) {     

if(typeof name !== "undefined") 

{         this.name = name;     } 

else 

{         this.name = 'default'     } }; 

這段代碼看起來很簡(jiǎn)單。如果你有name值,則使用它。如果沒有,則使用 ‘default’:

var firstObj = new BaseObject(); 

var secondObj = new BaseObject('unique');  

console.log(firstObj.name);  // -> 結(jié)果是'default' 

console.log(secondObj.name); // -> 結(jié)果是 'unique'

但是如果我們執(zhí)行delete語句呢:

delete secondObj.name; 

我們會(huì)得到:

console.log(secondObj.name); // -> 結(jié)果是 'undefined' 

但是如果能夠重新回到 ‘default’狀態(tài)不是更好么? 其實(shí)要想達(dá)到這樣的效果很簡(jiǎn)單,如果我們能夠使用原型繼承的話:

BaseObject = function (name) 

{     if(typeof name !== "undefined") 

{         this.name = name;     } };  

BaseObject.prototype.name = 'default'; 

在這個(gè)版本中, BaseObject 繼承了原型中的name 屬性, 被設(shè)置為了 'default'.。這時(shí),如果構(gòu)造函數(shù)被調(diào)用時(shí)沒有參數(shù),則會(huì)自動(dòng)設(shè)置為 default。相同地,如果name 屬性被從BaseObject移出,系統(tǒng)將會(huì)自動(dòng)尋找原型鏈,并且獲得 'default'值:

 `var thirdObj = new BaseObject('unique'); 

 console.log(thirdObj.name);  

 delete thirdObj.name;

 console.log(thirdObj.name);  // -> 結(jié)果是 'default'` 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)