Javascript定義基礎類

2021-07-28 00:10:12 字數 2162 閱讀 8685

1.工廠方式

function 

car();

return

ocar;

}var

car1 = car();

var

car2 = car();

呼叫此函式時將建立新物件,並賦予它所有的屬性和方法。使用此函式可以建立2個屬性完全相同的物件。

當然可以通過給它傳遞引數來改版這種方式。

function 

car(color,door);

return

ocar;

}var

car1 = car('red',4);

var

car2 = car('

blue

',4);

car1.showcolor() //output:」red」

car2.showcolor() //output:」blue」

現在可以通過給函式傳遞不同的引數來得到具有不同值的物件。

在前面的例子中,每次呼叫函式car(),都要建立showcolor(),意味著每個物件都有乙個自己的showcolor()方法。

但是事實上,每個物件鬥共享了同乙個函式。 雖然可以在函式外定義方法,然後通過將函式的屬性指向該方法。

function 

showcolor()

function

car()

但是這樣看起來不像是函式的方法。

2.建構函式方式

function 

car(color,door);

}var

car1 = new

car('red',4);

var

car2 = new

car('

blue

',4);

可以看到建構函式方式在函式內部沒有建立物件,是用this關鍵字。因為在呼叫建構函式時已經建立了物件,而在函式內部只能用this來訪問物件屬性。

現在用new來建立物件,看起來像那麼回事了!但是它同工廠方式一樣。每次呼叫都會為物件建立自己的方法。

3、原型方式該方式利用了物件的prototype屬性。首先用空函式建立類名,然後所有的屬性和方法都被賦予prototype屬性。

function 

car()

car.prototype.color = '

red';

car.prototype.doors = 4;

car.prototype.showcolor = function()

var

car1 = new

car();

var

car2 = new

car();

在這段**中,首先定義了乙個空函式,然後通過prototype屬性來定義物件的屬性。呼叫該函式時,原型的所有屬性都會立即賦予要建立的物件,所有該函式的物件存放的都是指向showcolor()的指標,語法上看起來都屬於同乙個物件。

但是這個函式沒有引數,不能通過傳遞引數來初始化屬性,必須要在物件建立後才能改變屬性的預設值。

4、動態原型方式

動態原型的方式同混合的建構函式/原型方式原理相似。唯一的區別就是賦予物件方法的位置。

function 

car(color,door);

car._initialized = true;

}}

動態原型方式是使用乙個標誌來判斷是否已經給原型賦予了方法。這樣可以保證該方法只建立一次

6、混合工廠方式

它的目的師建立假建構函式,只返回另一種物件的新例項

function 

car();

return

ocar;

}

與工廠方式所不同的是,這種方式使用new運算子。

以上就是全部的建立物件方法。目前使用最廣泛的就是混合建構函式/原型方式,此外,動態原型方式也很流行。在功能上與建構函式/原型方式等價。

Javascript定義物件

1.原始方式 建立多個物件缺陷 var car new object car.name asdf car.method1 function 2.工廠模式,可傳遞引數 方法建立多個缺陷 function createcar return tempobj var carobj createcar 3.工...

JavaScript定義模組

採用類似amd和commonjs的方式來定義模組,define是全域性函式,基本語法如下 define id?dependencies?factory id,模組識別符號,用來唯一標識所定義模組,只能是字串 dependencies,模組依賴,只能是陣列,且其每一項均是所依賴模組的id factor...

scala基礎語法 類定義

package org.xj.scala.spark 宣告類 乙個原始檔中可以包含很多類,並且scala都是public級別的 class basic2 定義乙個類 scala中的var val def val和def都會被編譯為乙個方法,區別是 val會被編譯器保證執行時其值不能改變,但def不同...