1.工廠模式
function createperson(name)
//出產品
return obj;
}var p1 = createperson("a")
var p2 = createperson("a")
var p3 = createperson("a")
var p4 = createperson("a")
console.log(p1 instanceof createperson) //false
console.log(p1 instanceof object) //true
工廠模式解決了重複例項化多個物件的問題,但沒有解決物件識別的問題(但是工廠模式卻無從識別物件的型別,因為全部都是object,不像date、array等,本例中,物件的型別都是object,因此出現了建構函式模式)。
2.建構函式模式
function createperson2(name)
}var o1 = new createperson2("b")
var o2 = new createperson2("b")
var o3 = new createperson2("b")
var o4 = new createperson2("b")
console.log(o1 instanceof createperson2) //true
console.log(o1 instanceof object) //true
對比工廠模式有以下不同之處:
1、沒有顯式地建立物件
2、直接將屬性和方法賦給了 this 物件
3、沒有 return 語句
建構函式也有其缺陷,每個例項都包含不同的function例項,但是他們的功能是一樣的,會造成記憶體浪費,所以出現原型
3.原型模式
function createperson3(name)
createperson3.prototype.showname = function()
var y1 = new createperson3('c')
var y2 = new createperson3('c')
var y3 = new createperson3('c')
var y4 = new createperson3('c')
console.log(y1.showname === y2.showname) //true
原型模式也是可以通過instanceof 識別物件
原型模式把共有的屬性放在建構函式的原型物件中,這樣子建構函式的例項物件就都有了原型上的所有屬性。
JavaScript建立物件的5種模式
物件導向的語言有乙個標誌,即擁有類的概念,抽象例項物件的公共屬性與方法,基於類可以建立任意多個例項物件,一般具有封裝 繼承 多型的特性!但js中物件與純物件導向語言中的物件是不同的,ecma標準定義js中物件 無序屬性的集合,其屬性可以包含基本值 物件或者函式。可以簡單理解為js的物件是一組無序的值...
建立物件的三種方式及工廠模式建立物件
1.字面量的方式 var per1 2.呼叫系統的建構函式 var per2 new object per2.name 大蛇丸 per2.age 35 per2.boy per2.like function 3.自定義建構函式 function person name,age,var per3 ne...
javascript,建立物件的3種方法
建立物件,可以通過字面量 關鍵字new,object.create 函式建立。1.字面量。var o1 2.關鍵字new。var o4 new object o4.name kxh1 o4.deal function 3.object.create 函式。函式定義 object.create pro...