由一系列函數(shù)或一系列指令組成
具有靈活性、代碼的可重用性、模塊性等特點,容易維護和開發(fā),非常適合多人合作的大型軟件項目。
“對象”是單個實物的抽象。通常需要一個模板,表示某一類實物的共同特征,然后“對象”根據(jù)這個模板生成。javaScript語言的對象體系,不是基于“類”的,而是基于構(gòu)造函數(shù)(constructor)和原型鏈(PRototype)。 1. Javascript語言使用構(gòu)造函數(shù)作為對象的模板。 2. 一個構(gòu)造函數(shù),可以生成多個對象,這些對象都有相同的結(jié)構(gòu)。 3. 構(gòu)造函數(shù)的寫法就是一個普通的函數(shù)。 4. 為了與普通函數(shù)區(qū)別,構(gòu)造函數(shù)名字的第一個字母通常大寫。 5. 函數(shù)體內(nèi)部使用了this關(guān)鍵字,代表了所要生成的對象實例。生成對象的時候,必需用new命令,調(diào)用執(zhí)行構(gòu)造函數(shù),返回一個實例對象。 6. new命令本身就可以執(zhí)行構(gòu)造函數(shù),所以后面的構(gòu)造函數(shù)可以帶括號,也可以不帶括號。
構(gòu)造函數(shù)的目的,就是操作一個空對象(即this對象),將其“構(gòu)造”為需要的樣子。如果構(gòu)造函數(shù)內(nèi)部有return語句,而且return后面跟著一個對象,new命令會返回return語句指定的對象;否則,就會不管return語句,返回this對象。
其他: 在函數(shù)內(nèi)部可以使用instanceof或new.target判斷是否通過new調(diào)用函數(shù)
function Fubar(foo,bar){ if(!(this instanceof Fubar)){return new Fubar(foo,bar);} this._foo=foo; this._bar=bar;}Fubar(1,2)._foo//1(new Fubar(1,2))._foo//1function Fubar2(foo,bar){ if(!(new.target===Fubar2)){return new Fubar2(foo,bar);} this._foo=foo; this._bar=bar;}Fubar2(1,2)._foo//1(new Fubar2(1,2))._foo//1參考資料: http://javascript.ruanyifeng.com/oop/basic.html
新聞熱點
疑難解答
圖片精選