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
函数。
您可以参考:
好的,所以我一直在阅读 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
函数。
您可以参考: