5

我是 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有什么区别?它们完全一样吗?如果不是,哪一种是更可取的使用方式?

谢谢

4

2 回答 2

2

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

第二种方法将创建两个对象,其中一个将被丢弃。与第一个方法一样,在调用函数之前将创建一个对象,但是由于该函数返回另一个对象,因此将丢弃第一个对象并使用返回的对象。

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

于 2013-08-11T23:14:43.267 回答
1

不同之处在于您使用这些功能的方式。

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

var bill = new person(); 

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


第二个旨在用作正常功能(不带new),例如:

var bill = person(); 

您可以将这种对象创建方式与构建器模式结合使用。

于 2013-08-11T23:17:02.997 回答