javascript new object 构造函数替代合适吗?

javascript new object constructor function alternative proper?

好的,所以我一直在阅读 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new 并发现自己在 class 类型的方案中编写了一堆 object 构造代码。

为了保持向后兼容性,我很少使用 'class' keyword/syntax。

您可能以前看过这个:

function Car(make, model, year) {
    this.make = make;
    this.model = model;
    this.year = year;
}
//Usage: var carinstance = new Car("blah","blah","blah");

但我发现这对我的使用来说效果很好(偶然发现的):

function Player (name) {
    var p = {
        name : name,
        age : 18
    };
    return p;
}
//Usage: var person = new Player("Jon");

我知道它有效,因为我用过它。 就是不知道这样对不对

例如,我可以使用相同的代码 w/o 'new' 关键字(结果相同):

var person = Player("Jon");

但是我不能对第一个规范做同样的事情(在函数中使用 'this' 关键字):

var car = Car("blah","blah","blah"); //car == undefined

我真的不知道如何 google 这个,或者怎么称呼它。我很难弄清楚这个问题应该有什么标题。

我想用更明确的方式来提出问题: 我得到的结果只是 javascript、浏览器引擎等的夸克吗?或者这是制作构造函数的可靠方法?

执行以下操作。

function Car(make, model, year) {
    if ( !(this instanceof Car) )
      return new Car(make, model, year);
    this.make = make;
    this.model = model;
    this.year = year;
}

然后不用new就可以调用了

因为在Player函数中,它return是p对象。所以,如果你使用new运算符调用Player函数,它会是p对象而不是默认创建的obj.Of当然,它也会returnp 一般调用 Player 时的对象。但是,在Car函数中,它不会return一个object.Therefore,当你使用new运算符调用Car函数时,它会return默认创建一个对象,它通常会 return undefined 调用 Car 函数。

您可以参考:

usage of new operator