對JS關於物件建立的幾種方式的整理

2021-07-27 16:35:16 字數 2747 閱讀 1185

最近一直在看js高階程式設計這本書,有空來梳理一下幾種建立物件的方式。話不多說,直接步入正題。

第一種:object建構函式建立

var person = new object();

person.name = 'nike';

person.age = 29;

這行**建立了object引用型別的乙個新例項,然後把例項儲存在變數person中。

第二種:使用物件字面量表示法

var person = {};//相當於var person = new object();

var person =

物件字面量是物件定義的一種簡寫形式,目的在於簡化建立包含大量屬性的物件的過程。也就是說,第一種和第二種方式建立物件的方法其實都是一樣的,只是寫法上的區別不同

在介紹第三種的建立方法之前,我們應該要明白為什麼還要用別的方法來建立物件,也就是第一種,第二種方法的缺點所在:它們都是用了同乙個介面建立很多物件,會產生大量第三種:使用工廠模式建立物件

function

createperson(name,age,job);

return

o;

}var person1 = createperson('nike',29,'teacher');

var person2 = createperson('arvin',20,'student');

在使用工廠模式建立物件的時候,我們都可以注意到,在createperson函式中,返回的是乙個物件。那麼我們就無法判斷返回的物件究竟是乙個什麼樣的型別。於是就出現了第四種建立物件的模式。

第四種:使用建構函式建立物件

function

person(name,age,job);

}var person1 = new person('nike',29,'teacher');

var person2 = new person('arvin',20,'student');

對比工廠模式,我們可以發現以下區別:

1.沒有顯示地建立物件

2.直接將屬性和方法賦給了this物件

3.沒有return語句

4.終於可以識別的物件的型別。對於檢測物件型別,我們應該使用instanceof操作符,我們來進行自主檢測:

alert(person1 instanceof object);//

ture

alert(person1 instanceof person);//

ture

alert(person2 instanceof object);//

ture

alert(person2 instanceof object);//

ture

同時我們也應該明白,按照慣例,建構函式始終要應該以乙個大寫字母開頭,而非建構函式則應該以乙個小寫字母開頭。

那麼建構函式確實挺好用的,但是它也有它的缺點:

就是每個方法都要在每個例項上重新建立一遍,方法指的就是我們在物件裡面定義的函式。如果方法的數量很多,就會占用很多不必要的記憶體。於是出現了第五種建立物件的

方法第五種:原型建立物件模式

function

person(){}

person.prototype.name = 'nike';

person.prototype.age = 20;

person.prototype.jbo = 'teacher';

person.prototype.sayname = function

();var person1 = new

person();

person1.sayname();

使用原型建立物件的方式,可以讓所有物件例項共享它所包含的屬性和方法。

如果是使用原型建立物件模式,請看下面**:

function

person(){}

person.prototype.name = 'nike';

person.prototype.age = 20;

person.prototype.jbo = 'teacher';

person.prototype.sayname = function

();var person1 = new

person();

var person2 = new

person();

person1.name ='greg';

alert(person1.name);

//'greg' --來自例項

alert(person2.name); //

'nike' --來自原型

當為物件例項新增乙個屬性時,這個屬性就會遮蔽原型物件中儲存的同名屬性。

這時候我們就可以使用建構函式模式與原型模式結合的方式,建構函式模式用於定義例項屬性,而原型模式用於定義方法和共享的屬性

第八種:組合使用建構函式模式和原型模式

function

person(name,age,job)

person.prototype =;

}var person1 = new person('nike',20,'teacher');

以上就是我所總結的八種建立物件的方式,如有誤差,請望指出。

js 建立物件的幾種方式

一 原始方式 解釋 原始方法建立物件,通過new關鍵字生成乙個物件,然後根據js是動態語言的特性新增屬性和方法,構造乙個物件。其中this是表示呼叫該方法的物件。缺點 多次建立物件,則需要重複 多次,不利於 的復用。二 工廠模式 var getage function var getname fun...

js 建立物件的幾種方式

第一種 工廠模式 例1 function createobj name,age return o var per1 createobj 張三 20 per1.sayinfo 缺點 無法知道物件的型別 第二種 建構函式模式 例2 function person name,age var per2 ne...

js建立物件的幾種方式

雖然object建構函式或物件字面量都可以建立單個物件,但這些方式有個明顯的缺點,那就是使用同乙個介面創造很多物件,會產生大量的重複 所以產生了下面幾種模式。1 工廠模式 function createperson name,age,job o.name name o.age age o.job j...