![](/img/trans.png)
[英]Are these two ways of constructing an object in JavaScript equivalent?
[英]Two ways of constructing an object in Javascript
function Person(age,name){
this.name = name;
this.age = age;
this.speak = function(){...}
}
function Person(age,name){
var p = {}
p.name = name;
p.age = age;
p.speak = function(){...}
return p;
}
我看到的唯一区别是使用第一个你必须用new调用让语言知道它构造一个新对象,它本质上只是构造一个对象,其中'this'指的是正在创建的新对象??
就像这样做。
{
age: 12,
name: "mark",
speak: function(){...}
}
第二个返回一个对象,你可以写
Person(12,"mark")
代替
new Person(12,"mark")
所以我想我的问题是,使用第二个版本是否有什么问题,我说的差异是正确的,它们是两者之间的唯一区别吗?
第一个:
function Person(age,name){
this.name = name;
this.age = age;
this.speak = function(){...}
}
instanceof Person
一起正常工作 new
工作。 class
和extends
语法如何工作,这很可能是将来编写很多Javascript的方式。 第二个:
function Person(age,name){
var p = {}
p.name = name;
p.age = age;
p.speak = function(){...}
return p;
}
instanceof
。 new
调用并且仍然有效(系统创建的新对象将被丢弃)。 除了这些差异之外,两者的功能大致相同,并且在任何一种方法中技术上都没有“错误”。
Javascript中有两种编程风格的倡导者,有些人会说有一种情况比另一种情况更合适,反之亦然。 我建议你为这个对象构建一些子类来清除一些编程差异,因为子类的工作方式也不同。
如果你想搜索关于这个主题的其他文章,这基本上是“构造函数与Javascript中的工厂函数”,它有时会偏离使用.prototype
的参数/反对,但也倾向于覆盖你的主题。
以下是关于该特定主题的一些文章(涵盖了一系列意见):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.