好的,我一直在阅读 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new 并发现自己在类方案中编写了一堆对象构造代码。
为了保持向后兼容性,我没有太多使用“class”关键字/语法。
您以前可能见过这个:
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");
我知道它有效,因为我已经使用过它。 我只是不知道这是否合适。
例如,我可以使用相同的代码,无需“new”关键字(相同的结果):
var person = Player("Jon");
但我不能对第一个规范执行相同的操作(在函数中使用“this”关键字):
var car = Car("blah","blah","blah"); //car == undefined
我真的不知道如何用谷歌搜索这个,或者如何调用它。我很努力地想弄清楚这个问题应该有什么标题。
我想用更明确的方式来提出这个问题: 我得到的结果只是 javascript、浏览器引擎等的夸克吗?或者这是创建构造函数的可靠方法吗?
最佳答案
因为在Player
函数中,它返回p
对象。所以,如果你使用new
操作符调用Player
函数,它将是p
对象,而不是默认创建的obj。当然,它也会一般情况下,调用 Player
时会返回 p
对象。但是,在 Car
函数中,它不会返回对象。因此,当您使用 new
运算符调用 Car
函数时,它将返回默认创建一个对象,通常调用 Car
函数时它会返回 undefined
。
您可以引用:
关于javascript新对象构造函数替代正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45294566/