Javascript的物件建立方法

2021-09-17 04:29:18 字數 3491 閱讀 2446

var person = new object();

person.name = "albert";

person.sayname = function();

var person = 

};

建立很多物件的時候會產生大量重複**。

function createperson(name)

return o;

}var person = createperson("albert");

無法識別物件型別,即無法通過instanceofconstructor來識別物件型別:

person instanceof ???;

person.constructor == ???;

function person(name)

}var person = new person("albert");

console.log(person.constructor == person)//true

console.log(person instanceof person)//true

每個方法都要在每個例項上重新建立一次,尤其是函式,這樣每個person的例項都包含了乙個不同的sayname的函式例項。

注意1

建構函式沒有return語句。要建立person的新例項,必須採用new操作符,new操作符大體上完成了一下4件事情:

注意2

建構函式也是函式,如果不通過new操作符呼叫,則作用環境為全域性(瀏覽器中為windows,node環境中為global

function person(name)

}person("bb");

global.sayname()//bb

console.log(global.name)//bb

function person(name){}

person.prototype.name = "albert";

person.prototype.sayname = function()

var person = new person();

console.log(object.getprototypeof(person)==person.prototype);//true

瀏覽器支援:ie9+,這樣所有的person例項共享name屬性及sayname函式

注意1

注意2

在定義原型時,如果用字面量代替為prototype屬性定義,則原型的constructor屬性不會指向person。因為通過字面量定義,完全重寫了預設的prototype物件。但是此時instanceof還是能夠返回正確的結果。

function person(name){};

person.prototype=

};var person = new person();

console.log(person instanceof person);//true

console.log(person.constructor == person);//false

console.log(person.constructor == object);//true

所以可以再補充定義:

object.defineproperty(person.prototype,"constructor",)
注意3

在重定義原型前,不能建立物件例項,否則會造成例項的原型指向錯誤

function person(name){};

var person = new person();

person.prototype=

};person.sayname(); //error

此例中person的原型被指向了person的預設原型,固呼叫sayname函式會發生錯誤。

利用建構函式都是例項屬性和原型的共享特性,分別定義對應的內容,組合共同完成物件建立,而且該模式還支援想建構函式傳遞引數。

function person(name);

person.prototype.sayname = function();

將1.6中的組合封裝在乙個建構函式中的模式。具體方法為:檢查某個應該存在的方法是否有效來決定是否需要初始化原型。

function person(name);

}};

建構函式在不反回值的情況下,缺省會返回新物件例項。

而通過在函式末尾新增return語句,可以重寫new後呼叫函式時的返回值。

function person(name);

return o;

};var person = new person("albert");

console.log(person instanceof person);//false

該函式除了使用new操作符和把包裝函式取名叫「建構函式」以外,和工廠模式其實是一模一樣的。

該模式屬於比較特殊的構造模式,可用於不允許修改原物件的情況。

function specialarray();

return values

}

該模式構造出來的物件沒有公共屬性,不適用this物件,不適用new操作符,適用於在一些安全環境中,可防止資料被其它應用(如mashup)改動(利用閉包特性),類似於寄生建構函式模式,單不適用thisnew

function person(name);    

return o;

};var person = person("albert");

這種模式中,除了sayname()方法以外,沒有其它辦法訪問_name的值。

javascript物件的建立

function createoject name,return object var aa createoject zhangsan nan aa.run 利用第一種方式的問題就是不能識別他是什麼物件 function myobject name,var testobect new myobjec...

JavaScript物件的建立

var person new object person.name cjh person.age 19 var person 需要注意的是,花括號內,成員與成員之間以逗號隔開,而最後乙個成員後不能跟逗號,否則會在ie7及更早的版本中報錯。成員名也可以直接使用字串。其一大優點是可以向函式傳遞大量引數。...

JavaScript建立物件

一 建立單個物件 方式一 object建構函式 var o new object o.key value 方式二 物件字面量 方式一和二缺點 使用相同的介面建立很多物件會產生大量重複 使用方式三解決 方式三 工廠模式 使用函式封裝以特定介面建立物件的細節 function createobject ...