2012-04-03 46 views
2

我明白,有多种方式可以在javascript中创建对象,并且我一直在阅读该对象的文字语法通常是首选。 (正确吗?)使用文字与自定义构造函数创建Javascript对象

我无法弄清楚的是,如果有任何理由使用任何其他方式创建对象,例如自定义构造函数(var p = new Person("Adam"))?仅当我想要私有变量或将方法或属性添加到其原型时,才使用自定义构造函数是真的吗?没有办法在字面上做这些事情吗?

+0

原型继承,类扩展,重复对象的简化构造,通过'instanceof'进行类型检查......等等。 – zzzzBov 2012-04-03 14:24:15

回答

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 

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

2

的讨论通常是约偏爱

var myObject = {}; 

var myObject = new Object(); 

不过,若你创建你自己的构造函数,你是完全允许使用new关键字,没有什么争议的存在,以实例化它们。

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" }; 
+0

JSON似乎是错误的术语。 JSON不允许使用一种方法。 – user895400 2012-04-03 14:20:23

+0

@ user895400,JSON表示JavaScript对象表示法。这是JavasScript,我们正在使用它的对象符号。 JSON是正确的。 – zzzzBov 2012-04-03 14:21:56

+0

加上它确实允许方法;你可以在JSON对象中创建一个函数(虽然这不是好的做法)。通常,JSON意味着整洁和紧凑。 – 2012-04-03 14:50:09

相关问题