Javascript构造函数与对象文字混淆

时间:2018-01-01 22:14:00

标签: javascript object constructor prototype

我最近遇到了构造函数,用于创建具有相同属性和方法的多个对象。

方法1:

function Person(name) {
  this.name =  name;
}

然后你可以这样实例化它:

var bob = new Person("bob");

我想知道的是,使用标准构造函数方法与仅返回函数内部的对象之间存在差异:

方法2:

function Person(name) {
  var obj = {
    name:  name,
  };
  return obj;
}

我仍然可以使用相同的功能创建多个对象。我对你为什么要使用'方法1'?感到有点困惑。是因为我可以使用prototype属性扩展第一个方法吗?我能够使用'方法2'?

扩展和创建更多方法

我是否正确地认为这就是为什么你使用构造函数,因为它们更灵活,可以添加和修改,而函数内的Object文字类型不能?还有什么其他好处呢?

对不起,如果这是一个愚蠢的问题。

谢谢,任何信息都不错

1 个答案:

答案 0 :(得分:1)

考虑:

  function Person(name) { /* either of your approaches */}

  Person.prototype.getName = function() {
    return this.name; 
  }

方法1将按预期工作,方法2不会,如果您致电:

  new Person('Bob').getName ()