如何用JavaScript定義一個(gè)類
我原來(lái)的寫法都是這樣:
function Dog(){
this.name = 'hachi';
}
Dog.prototype = {
makeNoise:function(){
alert('wangwangwang');
}
};
后來(lái)又看到另外一種復(fù)雜一點(diǎn)而且看起來(lái)好像沒有必要的寫法:
function Dog(){
var privateVariable = 'secret';
var fn = function(){
//...
}
fn.prototype = {
makeNoise:function(){
alert('wangwangwang');
}
}
return fn;
}
這里的Dog函數(shù)其實(shí)是一個(gè) 制造類 的函數(shù),它返回了真正的Dog類。
感覺這樣做的好處是更好的實(shí)現(xiàn)了封裝。
例如這里的privateVariable就是一個(gè)私有變量:
var d = new Dog; d.privateVariable //undefined
另外如果在第一個(gè)例子的最后加上一句:
Dog.prototype = {
//e...WTF??
}
這樣Dog就不是Dog了~
后來(lái)的理解:
上面這樣新建類的方法直接重寫了prototype對(duì)象。這樣prototype原本內(nèi)置的屬性就沒有了(arguments, call, apply等)。
下面這種新建類的方法好像更好一些:
var Dog = function(name){
this.name = name;
var privateVariable = 'you cannot see me.';
this.getPrivate = function(){return privateVariable;};
}
相關(guān)文章
一個(gè)JavaScript變量聲明的知識(shí)點(diǎn)
JavaScript變量聲明很簡(jiǎn)單,但是這里也有要學(xué)習(xí)的知識(shí)點(diǎn),對(duì)于JavaScript基礎(chǔ)學(xué)習(xí)很重要。2013-10-10
JavaScript lastIndexOf方法入門實(shí)例(計(jì)算指定字符在字符串中最后一次出現(xiàn)的位置)
這篇文章主要介紹了JavaScript字符串對(duì)象的lastIndexOf方法入門實(shí)例,lastIndexOf方法用于計(jì)算指定字符在字符串中最后一次出現(xiàn)的位置,需要的朋友可以參考下2014-10-10
深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解
這篇文章主要介紹了深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解,本文講解了默認(rèn)模式、借用構(gòu)造函數(shù)、借用構(gòu)造函數(shù)并設(shè)置原型、共享原型、臨時(shí)構(gòu)造函數(shù)、klass等內(nèi)容,需要的朋友可以參考下2015-03-03
javascript事件綁定學(xué)習(xí)要點(diǎn)
這篇文章主要介紹了javascript事件綁定學(xué)習(xí)要點(diǎn),主要包含下面四個(gè)方面1.傳統(tǒng)事件綁定的問題,2.W3C事件處理函數(shù),3.IE事件處理函數(shù),4.事件對(duì)象的其他補(bǔ)充,有需要的小伙伴可以參考下2016-03-03

