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

Javascript构造函数与对象文字混淆,javascript,object,constructor,prototype,Javascript,Object,Constructor,Prototype,我最近遇到了用于创建具有相同属性和方法的多个对象的构造函数 方法1: function Person(name) { this.name = name; } function Person(name) { var obj = { name: name, }; return obj; } 然后你可以像这样实例化它: var bob = new Person("bob"); 我想知道的是,使用标准构造函数方法和仅在函数中返回对象之间有什么区别,如下所示: 方法2:

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

方法1:

function Person(name) {
  this.name =  name;
}
function Person(name) {
  var obj = {
    name:  name,
  };
  return obj;
}
然后你可以像这样实例化它:

var bob = new Person("bob");
我想知道的是,使用标准构造函数方法和仅在函数中返回对象之间有什么区别,如下所示:

方法2:

function Person(name) {
  this.name =  name;
}
function Person(name) {
  var obj = {
    name:  name,
  };
  return obj;
}
我仍然能够使用相同的函数创建多个对象。我只是有点困惑,为什么你会使用“方法1”?是因为我可以使用prototype属性扩展第一个方法吗?我是否能够使用“方法2”扩展和创建更多方法

我认为这就是为什么使用构造函数的原因,因为它们更灵活,可以添加和修改,而函数中的对象文本类型则不能?它还带来了什么其他好处

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

谢谢,任何信息都很好

请考虑:

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

  Person.prototype.getName = function() {
    return this.name; 
  }
方法1将按预期工作,如果调用:

  new Person('Bob').getName ()

太长,读不下去了从ctor返回返回该值(在本例中,是在ctor内创建的对象)。从语义上讲,没有显式返回任何值的ctor可以被认为具有隐式
返回该值。因此,问题中的主要结果对象差异在于创建的对象视图
新建
(例如
为ctor)。。以及通过文字创建的对象。此问题与标记为重复的问题不同!!!你应该添加一个更完整的答案。例如,如果我说
obj.getName=function(){returnthis.name}?在肉眼看来,它似乎与您提供的示例完全相同。