好吧,所以我一直在阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new 并发现自己在一类方案中编写了一堆对象构造代码。JavaScript的新对象构造函数替代适当?
为了保持向后兼容性,我一直没有使用'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");
我知道它的工作原理 ,因为我用过它。 我只是不知道这是否正确。
例如,我可以使用相同的码的w/o“新”的关键字(相同的结果):
var person = Player("Jon");
但我不能做同样的与所述第一规格(使用“这个”的关键字一个函数):
var car = Car("blah","blah","blah"); //car == undefined
我真的不知道如何谷歌这个,或者叫什么。我很努力想弄清楚这个问题应该具备什么样的标题。
我想一个更明确的方式来提出这个问题: 我得到的结果只是一个JavaScript,浏览器引擎的夸克?或者,这是一个构建函数的可靠方法吗?
你的第一个方法是使用构造函数。在第二种方法中,您正在返回一个对象,但它不使用构造函数。当你开始使用'prototype'时,1个主要区别将会起作用。使用'new'创建的对象将具有您定义的原型,而另一个将只具有默认原型 – Rajesh
是的,这是''this'在JavaScript中的工作原理。不隶属于下面的渠道,但是这些是了解这里发生的事情的很好的资源! [The new keyword](https://www.youtube.com/watch?v=Y3zzCY62NYc) .... [“this&Object Prototypes”](https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/README.md#you-dont-know- JS-此 - 对象的原型) – dpaulus