5 3 字面量 工廠模式 和建構函式建立物件

2021-09-28 21:41:35 字數 2033 閱讀 1049

一、物件字面量建立

// 物件字面量建立

var obj =],

age:3,

fn:function()

}obj.fn(

)//mrs陳今年3歲了

console.

log(obj[

'age'])

//3//新增屬性

obj.*** =

'男'//改寫屬性

obj.name =

'mrs'

//要建立多個物件,就要乙個乙個寫,很不方便

二、工廠模式建立物件

函式呼叫時建立

// 工廠模式 (本質上是一種封裝函式)

function createperson

(name, age)

// 加工

obj.name = name;

obj.age = age;

// 出廠

return obj

}

// 封裝函式呼叫 傳參

var p1 =

createperson

('莊三',33

) console.

log(p1)

//object

var p2 =

createperson

('李四',55

) console.

log(p2)

//object

// 問題 沒法標識這個物件是有誰建立的

// instanceof 判斷物件是誰建立的

console.

log(p1 instanceof createperson)

//false p1 不是createperson建立的

console.

log(p1 == p2)

//false

工廠模式建立物件可以批量建立,但是有個問題

就是 建立的物件 不不知道自己是誰建立的

:注意這個函式名字是小寫的

這裡需要說乙個判斷物件的關係 instanceof

例如

// 判斷陣列是由誰建立的

var arr =

//判斷arr 是由array建立的嗎

console.

log(arr instanceof array)

//true

三、建構函式建立

先說一下建構函式的一些特點及和工廠模式的區別

1、首字母習慣性的大寫

2、建構函式可以區分是誰建立出來的

3、建立物件的時候必須用new 呼叫

4、建構函式中用到了this this的指向new呼叫生成的函式物件

5、建構函式中沒用return

來瞅一眼

習慣性大寫

function createperson

(name,age)

}var p1=

newcreatepeson

('莊三',22

)//new呼叫

建構函式建立物件有什麼問題嗎

導引:

console.

log(p1.fn == p2.fn)

//false

console.

log(

function()

==function()

)//false

console.

log(

==)//false

console.

log(==)

//false

// 問題:就是兩個建立出來的物件不是同乙個構造函

// 這樣當建立多個函式時會重複建立多個相同的函式,很佔記憶體

js建立物件方法 字面量, 建構函式,工廠模式

字面量的方法 var per1 readbook function 呼叫系統的建構函式 var per2 new object per2.name 大蛇丸 per2.age 30 per2.男 per2.eat function per2.play function console.log per2...

JS中的工廠模式和建構函式模式

工廠方法建立物件 function createperson name age gender return obj var obj2 createperson 豬八戒 18 男 var obj3 createperson 孫悟空 18 男 obj2.say 豬八戒 obj3.say 孫悟空使用工廠方...

《JS設計模式筆記》建構函式和工廠模式建立物件

工廠模式 1 function createperson name,age,job 9return o 10 11 var person1 createperson terry 24,software engineer 12person1.sayname 13var person2 createpe...