制作javascript对象的两种不同方法

时间:2013-08-11 23:06:24

标签: javascript

我是Javascript的新手,现在正在研究它......

var person = function() {
    this.name = "name"
};

var person2 = function() {
    var obj = {};
    obj.name = "name";
    return obj;
};

假设我们有两个上面显示的函数。似乎可以使用任一函数创建对象。例如)

var p = new person();
var p2 = new person2();

我的问题是:人与人之间有什么区别?它们完全一样吗?如果不是哪一种更优选的使用方式?

由于

2 个答案:

答案 0 :(得分:2)

创建对象的常规方法是第一种方式。

第二种方法将创建两个对象,其中一个将被丢弃。在调用函数之前将创建一个对象,就像第一个方法一样,但是因为函数返回另一个对象,所以将丢弃第一个对象,而是使用返回的对象。

方法之间的一个重要区别是第二个方法不能使用原型。放在函数原型中的任何内容都将应用于最终被丢弃的对象。

答案 1 :(得分:1)

区别在于您使用这些功能的方式。

第一个用作构造函数this被设置为新创建的对象。它旨在与运算符new结合使用,如下所示:

var bill = new person(); 

这就像典型的OOP语言中的普通构造函数一样。


第二个用作普通函数(不含new),例如:

var bill = person(); 

您可以将这种对象创建方式与builder pattern结合使用。