我明白,有多种方式可以在javascript中创建对象,并且我一直在阅读该对象的文字语法通常是首选。 (正确吗?)使用文字与自定义构造函数创建Javascript对象
我无法弄清楚的是,如果有任何理由使用任何其他方式创建对象,例如自定义构造函数(var p = new Person("Adam")
)?仅当我想要私有变量或将方法或属性添加到其原型时,才使用自定义构造函数是真的吗?没有办法在字面上做这些事情吗?
我明白,有多种方式可以在javascript中创建对象,并且我一直在阅读该对象的文字语法通常是首选。 (正确吗?)使用文字与自定义构造函数创建Javascript对象
我无法弄清楚的是,如果有任何理由使用任何其他方式创建对象,例如自定义构造函数(var p = new Person("Adam")
)?仅当我想要私有变量或将方法或属性添加到其原型时,才使用自定义构造函数是真的吗?没有办法在字面上做这些事情吗?
当你想创建对象,类似于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 myObject = {};
在
var myObject = new Object();
不过,若你创建你自己的构造函数,你是完全允许使用new关键字,没有什么争议的存在,以实例化它们。
的优选方法是使用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" };
JSON似乎是错误的术语。 JSON不允许使用一种方法。 – user895400 2012-04-03 14:20:23
@ user895400,JSON表示JavaScript对象表示法。这是JavasScript,我们正在使用它的对象符号。 JSON是正确的。 – zzzzBov 2012-04-03 14:21:56
加上它确实允许方法;你可以在JSON对象中创建一个函数(虽然这不是好的做法)。通常,JSON意味着整洁和紧凑。 – 2012-04-03 14:50:09
原型继承,类扩展,重复对象的简化构造,通过'instanceof'进行类型检查......等等。 – zzzzBov 2012-04-03 14:24:15