js建立物件的幾種方式

2022-07-12 07:45:12 字數 1990 閱讀 4055

/*

* * 順便重溫一下物件的建立方式

* **簡單說明問題就好

* 概念性的東西這裡就不提了,只加上自己簡單理解 */

/*** 工廠模式,就是將手動的建立細節封裝在乙個方法裡,

* return出來乙個例項。

* 所謂工廠就是封裝建立工程,得到例項。

* 缺點:不能判斷物件型別,因為得到的型別都是object,

* 不能知道是否createperson的例項

* 是否某物件的例項的判斷其實就是例項的原型是否指向物件

* */

function

createperson(name);

returnp;}

var p1 = createperson('p1');/**

* 建構函式模式:與工廠的不同是不用顯式的去new乙個物件

* 因為不管什麼函式,只要使用new來呼叫都起到建構函式的作用。

* 例項可以通過 instanceof person 來獲得物件型別.

* 缺點:每個方法都要在例項上建立一遍

* */

function

person(name)

}var p2 = new person('p2');

console.log(p2

instanceof person);//

true/**

* 原型模式

* 簡單粗暴原型鏈。

* 對應上述的,原型的方法,各個例項共享相應的屬性或方法

* 缺點就是屬性修改既影響其他

* */

function

cat()

cat.prototype.name = 'catname';

cat.prototype.age = 'catage';

cat.prototype.say = function

();var c1 = new

cat();

console.log(c1

instanceof cat);//

true/**

* 組合建構函式和原型模式

* 為了解決上面的問題混合使用兩種方式

* 該私有的私有,該共享的共享

* */

function

cat1(name)

cat1.prototype.say = function

();var c2 = new cat1('c2');

console.log(c2

instanceof cat1);//

true/**

* 動態原型模式

* 判斷屬性是否存在,來決定式否增加原型屬性

* 和混合模式類似

* */

function

cat2(name)

}}var c3 = new cat2('c2');

console.log(c3

instanceof cat2);//

true/**

* 寄生蟲建構函式模式:

* 函式封裝建立物件的**,返回建立的物件。

* 這裡於工廠模式的區別在於要通過new 來例項化。本質上是一樣的。

* 不可以判斷物件型別:

* */

function

dog(name);

returnd;}

var d = new dog('d');

console.log(d

instanceof dog);//

false/**

* 穩妥建構函式模式:安全

* 沒有公共屬性,方法不引用this。不使用new來例項化物件

* */

function

dog1(name);

returnd;}

var d2 = dog1('a');

console.log(d2

instanceof dog1);//

false

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