2

我知道有多种方法可以在 javascript 中创建对象,并且我一直在阅读对象文字语法通常是首选。(正确的?)

我无法弄清楚是否有理由使用任何其他方法来创建对象,例如自定义构造函数(var p = new Person("Adam"))?仅当我想要私有变量或向其原型添加方法或属性时才使用自定义构造函数是否正确?有没有办法在文字中做到这些?

4

3 回答 3

2

讨论通常是关于偏好的

var myObject = {};

超过

var myObject = new Object();

但是,如果您创建自己的构造函数,则完全可以使用 new 关键字来实例化它们,这没有什么争议。

于 2012-04-03T14:16:59.777 回答
2

当您想要创建对象的实例时,您可以使用自定义构造函数,类似于 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

现在我有这个对象的两个实例。如果我使用字符串文字,我需要将对象克隆到一个新的 var 中以获取另一个实例。

于 2012-04-03T14:19:44.920 回答
1

首选方法是使用 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" };
于 2012-04-03T14:17:24.917 回答