程序由一系列對象組成,由對象之間的分工與合作,完成對真實世界的模擬。
“對象”是真實世界中單個實物的抽象,具有屬性和方法。屬性就是對象的狀態;方法就是對象的行為。
由一系列函數或一系列指令組成
具有靈活性、代碼的可重用性、模塊性等特點,容易維護和開發,非常適合多人合作的大型軟件項目。
“對象”是單個實物的抽象。通常需要一個模板,表示某一類實物的共同特征,然后“對象”根據這個模板生成。javaScript語言的對象體系,不是基于“類”的,而是基于構造函數(constructor)和原型鏈(PRototype)。 1. Javascript語言使用構造函數作為對象的模板。 2. 一個構造函數,可以生成多個對象,這些對象都有相同的結構。 3. 構造函數的寫法就是一個普通的函數。 4. 為了與普通函數區別,構造函數名字的第一個字母通常大寫。 5. 函數體內部使用了this關鍵字,代表了所要生成的對象實例。生成對象的時候,必需用new命令,調用執行構造函數,返回一個實例對象。 6. new命令本身就可以執行構造函數,所以后面的構造函數可以帶括號,也可以不帶括號。
構造函數的目的,就是操作一個空對象(即this對象),將其“構造”為需要的樣子。如果構造函數內部有return語句,而且return后面跟著一個對象,new命令會返回return語句指定的對象;否則,就會不管return語句,返回this對象。
其他: 在函數內部可以使用instanceof或new.target判斷是否通過new調用函數
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
新聞熱點
疑難解答