1var person = new
object();
2 person.name = "
zhangsan";
3 person.age = 18
;4 person.job = "
frontend";
5 person.sayname =function () ;
8 console.log(person);
如果建立的物件包含大量的屬性,**會很多,為了簡化建立大量屬性的過程,因此出現了物件定義的簡寫形式,物件字面量。
1var person2 =
8 };
以上兩種方法是用來建立單個物件,但是如果建立多個相似的物件時,會產生大量重複的**因此產生了工廠函式
1function 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()
但是沒有解決物件的標識性問題,就是無法判斷建立出來的物件是什麼型別的,因此出現了建構函式用建構函式可以建立特定型別的物件,同時也可以建立自定義的建構函式,從而定義自定義物件型別的屬性和方法。
1function 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屬性,這個屬性是乙個指標,指向乙個物件,而這個物件包含了所有例項共享的屬性和方法。
因此可以將屬性和方法放在原型物件裡面,讓所有例項都可以共享。
1function 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); 67 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...