js 建立物件的幾種方式

2022-03-22 22:21:00 字數 3239 閱讀 1218

1

var person = new

object();

2 person.name = "

zhangsan";

3 person.age = 18

;4 person.job = "

frontend";

5 person.sayname =function () ;

8 console.log(person);

如果建立的物件包含大量的屬性,**會很多,為了簡化建立大量屬性的過程,因此出現了物件定義的簡寫形式,物件字面量。
1

var person2 =

8 };

以上兩種方法是用來建立單個物件,但是如果建立多個相似的物件時,會產生大量重複的**因此產生了工廠函式
1   

function ceratperson(name, age, job) ;

10return

o;11}12

//可以建立多個相似的物件,同時**量也減少了很多

13var person1 = ceratperson("

zhangsan

", 18, "

frontend");

14var person2 = ceratperson("

lisi

", 20, "

frontend");

15console.log(person1);

16 console.log(person1.constructor);//

function object()

但是沒有解決物件的標識性問題,就是無法判斷建立出來的物件是什麼型別的,因此出現了建構函式
用建構函式可以建立特定型別的物件,同時也可以建立自定義的建構函式,從而定義自定義物件型別的屬性和方法。

1

function person(name, age, job) 8}

9var person1 = new person("

zhangsan

", 18, "

frontend");

10var person2 = new person("

lisi

", 20, "

frontend");

11console.log(person1);

12console.log(person1.constructor);

13/*

function person(name,age,job)20}

*/21

//相對於工廠函式來說,解決了物件的標識性問題,同時**也更加簡潔。

2223

//把建構函式當做函式

24function person(name, age, job) 31}

32//

當做建構函式使用

33var person1 = new person("

zhangsan

", 18, "

frontend");

34 person1.sayname();//

zhangsan

35//

當做普通函式使用

36 person("

lisi

", 20, "

frontend

"); //

新增到window

37 window.sayname();//

lisi

38//

在另乙個物件的作用域中呼叫

39var o = new

object();

40 person.call(o, "

wangwu

", 25, "

frontend");

41 o.sayname();

建立的每個函式都有乙個prototype屬性,這個屬性是乙個指標,指向乙個物件,而這個物件包含了所有例項共享的屬性和方法。

因此可以將屬性和方法放在原型物件裡面,讓所有例項都可以共享。

1

function person(){}; 2

3 person.prototype.name='

zhangsan';

4 person.prototype.age=20;

5 person.prototype.sayname=function() 8

9var person1=new

person();

10 person1.sayname(); //

zhangsan

1112

var person2=new

person();

13 person2.sayname(); //

zhangsan

先新建乙個空的建構函式,然後將屬性和方法新增到原型物件裡面,再建立例項物件,例項物件就擁有了原型物件裡的屬性和方法。不管建立多少個例項物件,原型物件裡的屬性和方法都是共享的。

建構函式模式用於定義例項屬性,原型模式則用於定義方法和共享的屬性。這種混合模式不僅支援向建構函式傳入引數,還最大限度地節約了記憶體,可謂是集兩模式之長。示例**如下:

1             function person(name,age); 6

7 person.prototype.sayname=function()

1011

var person1=new person('

zhangsan

',20); //

建構函式模式

12var person2=new person('

wangwu

',15

);13

14 person1.friends.push('

van'

);15 alert(person1.friends); //

shelly,lucy,van

16 alert(person2.friends); //

shelly,lucy

除了以上幾種常見的模式外,批量建立物件的方式還有

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...