簡體   English   中英

使用文字和自定義構造函數創建Javascript對象

[英]Javascript object creation using literals vs custom constructor functions

我知道可以使用多種方法在javascript中創建對象,並且我一直在閱讀對象文字語法通常是首選。 (正確?)

我無法弄清楚的是,是否有理由使用其他任何方法來創建對象,例如自定義構造函數( var p = new Person("Adam") )? 僅當我想要私有變量或向其原型添加方法或屬性時才使用自定義構造函數嗎? 沒有辦法從字面上做到這些嗎?

討論通常傾向於

var myObject = {};

過度

var myObject = new Object();

但是,如果您創建自己的構造函數,則完全可以使用new關鍵字實例化它們,在那里沒有爭議。

當您要創建類似於Java的對象實例時,可以使用自定義構造函數。

例如:

function MyObj(x){
   this.x = x;
}

MyObj.prototype.printX = function(){
   alert(this.x);
}

var obj1 = new MyObj("hello");
var obj2 = new MyObj("hello2");
obj1.printX();//prints hello
obj2.printX();//prints hello2

現在,我有該對象的兩個實例。 如果使用String文字,則需要將對象克隆到新的var中以獲得另一個實例。

首選方法是使用JSON: var p = { "name":"Adam" };

如果您有很多成員變量需要初始化,或者將使用很多對象(例如它們的數組)等,那么繼續創建一個函數(構造函數)才有意義所有這些都為您服務。 除非您希望代碼如下所示:

var a = { "name":"Adam", "age":23, "city":"Boston" };
var b = { "name":"Jeff", "age":24, "city":"San mateo" };
var c = { "name":"Aaliyah", "age":25, "city":"New York" };
var d = { "name":"Mary", "age":26, "city":"Dallas" };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM