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

2021-09-25 07:02:00 字數 2036 閱讀 8928

1. 工廠模式

function

createobject

(name, age, gender)

}return obj

}var obj1 =

createobject

('zhangsan',12

,'男'

)var obj2 =

createobject

('lisi',15

,'女'

)obj1.

sayname()

console.

log(obj1,obj2)

console.

log(obj1.constructor)

//object

缺點:①無法確定物件的型別(因為都是object)。

②建立的多個物件之間沒有關聯。

2. 建構函式模式

function

person

(name, age, gender)

}var p1 =

newperson

('zhangsan',12

,'男'

) console.

log(p1)

console.

log(p1.constructor)

//person

function

dog(name, age, color)

var dog =

newdog

('饅頭',2

,'yellow'

) console.

log(dog)

console.

log(dog.constructor)

//dog

缺點:①多個例項重複建立方法,無法共享。

②多個例項都有sayname方法,但均不是同乙個function的例項。

3. 原型模式

function

person()

person.prototype.name =

'zhangsan'

;person.prototype.friends =

person.prototype.

sayname

=function()

var p1 =

newperson()

;console.

log(p1.name)

var p2 =

newperson()

;console.

log(p2.name)

p1.friends.

push

('rrrrr'

)console.

log(p1.friends)

//rrrrr

console.

log(p2.friends)

//rrrrr

缺點:①無法傳入引數,不能初始化屬性值。

②如果包含引用型別的值時,改變其中乙個例項的值,則會在所有例項中體現(資料共享)。

4. 組合模式(推薦)

function

person

(name, age, gender)

person.prototype =

}var p1 =

newperson

('zhangsan',11

,'男');

var p2 =

newperson

('lisi',11

,'女');

p1.friends.

push

('wwe'

)console.

log(p1.friends)

//wwe

console.

log(p2.friends)

// console.

log(p1)

console.

log(p1.constructor)

優點:建構函式共享例項屬性,原型共享方法和想要共享的屬性。可傳遞引數,初始化屬性值。

js四種內建物件

js四種內建物件分別為math物件 date物件 string物件以及array物件 math物件方法主要有 math.random 隨機數 math.pi 圓周率 math.ceil math.floor 向上取整和向下取整 math.round 四捨五入取整 math.abs 取絕對值 math...

JavaScript四種建立物件的方法

var colo document.getelementbyid colors innerhtml colo.blue 訪問物件屬性 訪問物件方法 document.getelementbyid colors innerhtml colo.black var colo new object colo...

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

建立物件 原生建立方法 new func 工廠模式 優點 原生建立方法的封裝。缺點 物件型別不可知。function createfunc args var obj createfunc args 建構函式模式 優點 物件型別可知 instanceof,obj.constructor 缺點 構造了多...