最近一直在看js高階程式設計這本書,有空來梳理一下幾種建立物件的方式。話不多說,直接步入正題。
第一種:object建構函式建立
var person = new object();person.name = 'nike';
person.age = 29;
這行**建立了object引用型別的乙個新例項,然後把例項儲存在變數person中。
第二種:使用物件字面量表示法
var person = {};//相當於var person = new object();var person =
物件字面量是物件定義的一種簡寫形式,目的在於簡化建立包含大量屬性的物件的過程。也就是說,第一種和第二種方式建立物件的方法其實都是一樣的,只是寫法上的區別不同
在介紹第三種的建立方法之前,我們應該要明白為什麼還要用別的方法來建立物件,也就是第一種,第二種方法的缺點所在:它們都是用了同乙個介面建立很多物件,會產生大量第三種:使用工廠模式建立物件
functioncreateperson(name,age,job);
return
o;
}var person1 = createperson('nike',29,'teacher');
var person2 = createperson('arvin',20,'student');
在使用工廠模式建立物件的時候,我們都可以注意到,在createperson函式中,返回的是乙個物件。那麼我們就無法判斷返回的物件究竟是乙個什麼樣的型別。於是就出現了第四種建立物件的模式。
第四種:使用建構函式建立物件
functionperson(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
同時我們也應該明白,按照慣例,建構函式始終要應該以乙個大寫字母開頭,而非建構函式則應該以乙個小寫字母開頭。
那麼建構函式確實挺好用的,但是它也有它的缺點:
就是每個方法都要在每個例項上重新建立一遍,方法指的就是我們在物件裡面定義的函式。如果方法的數量很多,就會占用很多不必要的記憶體。於是出現了第五種建立物件的
方法第五種:原型建立物件模式
functionperson(){}
person.prototype.name = 'nike';
person.prototype.age = 20;
person.prototype.jbo = 'teacher';
person.prototype.sayname = function
();var person1 = new
person();
person1.sayname();
使用原型建立物件的方式,可以讓所有物件例項共享它所包含的屬性和方法。
如果是使用原型建立物件模式,請看下面**:
functionperson(){}
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' --來自原型
當為物件例項新增乙個屬性時,這個屬性就會遮蔽原型物件中儲存的同名屬性。
這時候我們就可以使用建構函式模式與原型模式結合的方式,建構函式模式用於定義例項屬性,而原型模式用於定義方法和共享的屬性
第八種:組合使用建構函式模式和原型模式
functionperson(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...