使用文字与自定义构造函数创建Javascript对象

时间:2012-04-03 14:13:44

标签: javascript oop

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

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

3 个答案:

答案 0 :(得分:2)

讨论通常是喜欢

var myObject = {};

var myObject = new Object();

如果您创建自己的构造函数,则完全允许使用new关键字对它们进行实例化,那里没有任何争议。

答案 1 :(得分: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

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

答案 2 :(得分: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" };