js建立物件的幾種方式

2022-08-18 08:28:01 字數 2287 閱讀 3619

function

createperson(name, age) ;

return

o;}

每次呼叫這個函式都會返回乙個包含兩個屬性和乙個方法的物件。

js中的建構函式可以用來建立特定型別的物件,像object和array這樣的原生建構函式,在執行時會自動出現在執行環境中。此外,也是可以建立自定義的建構函式,從而定義自定義物件型別的屬性和方法。

1

function

person(name,age)7}

8var person1 = new person("xiaoming","18");

建構函式也是函式,只是呼叫他們的方式不同,任何函式,只要通過new操作符呼叫,則它就可以作為建構函式;不通過new操作符呼叫,則就是普通函式。

1、當做建構函式

1

var person1 = new person("xiaoming",18);  

2 person1.say(); //

xiaoming

2、當做普通函式

1 person("xiaozhu",20);   //

新增到window

2 window.say(); //

xiaozhu

我們建立的每乙個函式都有乙個prototype(原型)屬性,這個屬性是乙個指標,指向乙個物件,這個物件包含所有例項共享的屬性和方法。按照字面意思,那麼prototype就是通過呼叫建構函式而建立的物件例項的原型物件。使用它的好處是,可以讓所有物件例項共享原型中所包含的屬性和方法。

1

function

person(){}

2 person.prototype.name="xiaoming";

3 person.prototype.age=18;

4 person.prototype.say=function()7

var person1=new

person();

8 person1.say(); //

xiaoming

9var person2 = new

person();

10 person2.say(); //

xiaoming

然而當包含引用型別值的屬性時,就會出現問題;

1

function

person(){}

2 person.prototype.name="xiaoming";

3 person.prototype.age=18;

4 person.prototype.eat=['蘋果','橘子'];

5 person.prototype.say=function()8

var person1=new

person();

910 alert(person1.eat); //

蘋果 橘子

11 person1.eat.push("香蕉");

12var person2 = new

person();

13 alert(person2.eat); //

蘋果 橘子 香蕉

可以看到,eat屬性是引用型別的值,當person1更改了eat陣列,則在person2中也能反映出來,然而這並不是我們想要的結果。繼續看。

這種方式能極大解決單獨使用建構函式或者原型模式帶來的問題。這種方式是目前使用最廣泛的方法;組合使用,建構函式用來定義例項屬性,原型模式用來定義方法和共享屬性。這樣每個例項都會有屬於自己的例項屬性副本,而且同時又共享著對方法的引用,最大限度的節省了記憶體。

1

function

person(name,age)

6 person.prototype.say=function()9

var person1=new person("xiaoming",18);

10 alert(person1.eat); //

蘋果 橘子

11 person1.eat.push("香蕉");

12var person2 = new

person();

13 alert(person2.eat); //

蘋果 橘子

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