js 建立物件的9種方式對比

2021-07-29 20:46:38 字數 1738 閱讀 4423

@

建立物件 ##

原生建立方法

new func();   

{};

##工廠模式

優點:原生建立方法的封裝。

缺點:物件型別不可知。

function createfunc(args)

var obj=createfunc(args)

##建構函式模式

優點:物件型別可知

(instanceof,obj.constructor)

缺點:構造了多個相同功能的方法。(可以通過

this.func=window.func,

但這樣函式變全域性,失去封裝性)

function func(args)

var obj=new func(args); || func.call(obj,args); || func(args) window.prop;…

##原型模式

優點:解決了建構函式缺點

缺點:預設屬性相同,原型的引用型屬性有坑,乙個變全都變。

function func(){}    func.prototype.prop…         object.defineproperty(func.prototype,constructor,)   重寫原型更常用,但需在建立例項前定義原型,否則有坑

var obj=new func();

##構造原型模式結合

優點:結合構造原型兩家之長

缺點:不突出原型程式設計泛型的特點。

例項屬性用構造,方法和共享屬性用原型。

##原型轉殖模式(推薦)

優點:顯現出原型程式設計泛型的特點。《

單頁web應用

》p38

缺點:

var proto={};function makefunc()

var obj=makefunc();

不支援ob

ject.create()

的瀏覽器可

js實現。 ##

動態原型構造

優點:和其他

oo語言更接近。

缺點:不突出原型模式特點。

建構函式中動態初始化原型。

function func()} };

var obj=new func();

確保原型方法只定義一次,

if檢測只需一次。(若重寫原型會切斷與原有例項的聯絡

,原型模式同坑) ##

寄生式構造

優點:可用於構造方法的重構。

缺點:物件型別不可知,此法少用。

function newfunc()

var obj=new newfunc();

##穩妥建構函式模式(不用

this

不用new)

優點:專用於安全執行環境

,建構函式的變數只能通過

get函式來獲取。

缺點:物件型別不可知

function func();return obj; }

var obj=func();

和工廠方法的區別在於變數私有,只能通過閉包訪問。保證了安全性。

js建立物件的五種方式

方式一 object建構函式模式 套路 先建立空的object物件,在動態新增屬性 方法 適用場景 起始不確定物件內部資料 缺點 語句太多 var p new object p.name tom p.age 18 p.setname function name 方式二 物件字面量模式 套路 使用 建...

js 建立物件的6種方式

字面式建立物件var person new 操作符 object 建立物件var person newobject person.name lisi person.age 21 person.family lida lier wangwu person.say function 以上兩種方法在使用同...

JS建立物件的四種模式對比

1.工廠模式function createobject name,age,gender return obj var obj1 createobject zhangsan 12 男 var obj2 createobject lisi 15 女 obj1.sayname console.log ob...