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

sol*_*ljy 5 javascript

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

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

var person2 = function() {
    var obj = {};
    obj.name = "name";
    return obj;
};
Run Code Online (Sandbox Code Playgroud)

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

var p = new person();
var p2 = new person2();
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Guf*_*ffa 2

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

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

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

  • 我不同意第一种方式是正常的。我认为正常的方法是 `var p2 = {name: "name"};`,如果函数在多个地方使用,则可能使用函数返回的对象。 (2认同)
  • @Guffa因为“创建对象”并不意味着“使用‘new’关键字”。有人可能会阅读这篇文章并认为使用对象文字来创建对象不是“正常方式”。@Fabrico 没有太多东西需要自定义构造函数。使用构造函数可以做的几乎所有事情都可以使用普通对象完成。 (2认同)