“`new (N)”和“Array(N)”的区别是什么?
2025-05-07 20:27:06社区首页 >问答首页 >“`new (N)”和“Array(N)”的区别是什么?问“`new (N)”和“Array(N)”的区别是什么?ENStack Overflow用户提问于 2016-02-08 06:53:39回答 3查看 103关注 0票数 1如果两者都调用构造函数"Array“并生成一个对象,这又有什么区别呢?
我知道如果我们创建一些没有this的对象,我们就失去了new
代码语言:javascript运行复制function Animal(name) {this.name = name}
var duck = Animal('duck'); // undefined但是这对于new Array(n)和Array(n)是如何运作的呢?
javascriptarrays关注问题分享EN回答 3推荐最新Stack Overflow用户回答已采纳发布于 2016-02-08 06:58:57
没有什么不同。检查这个文章
您不需要在JavaScript中使用新对象()。使用对象文本{}代替。类似地,不要使用new (),而是使用数组文本[]。JavaScript中的数组不像Java中的数组那样工作,使用类似Java的语法会让您感到困惑。
不要使用新数字、新字符串或新布尔值。这些表单产生不必要的对象包装器。只需使用简单的文字代替。
..
所以这个规则很简单:我们唯一应该使用新操作符的时候是调用一个伪经典的构造函数。当调用一个构造函数时,使用new是强制性的。
收藏分享票数 2ENStack Overflow用户发布于 2016-02-08 06:58:09
规范中描述了Array的这种行为。你可以做到这样的行为
代码语言:javascript运行复制function Animal(name) {
if(!(this instanceof Animal)) {
return new Animal(name);
}
this.name = name
}
var duck = Animal('duck'); //Animal {name: "duck"}但是,更好的方法是遵循一个简单的代码风格惯例,即所有以大写字母开头的函数都是构造函数,应该用new调用。并设置一个链接,您希望检查您的代码遵循以下规则。
收藏分享票数 1ENStack Overflow用户发布于 2016-02-08 07:18:49
JavaScript使用原型继承。使用new命令时,它继承自Object。如果您想从用户定义的对象(例如,动物)继承,您需要使用new Animal()或不使用new,您可以这样做。
代码语言:javascript运行复制 // Function object acts as a combination of a prototype
// to use for the new object and a constructor function to invoke:
function Animal(name){
this.name = name
}
var inheritFrom = function(parent, prop){
// This is how you create object as a prototype of another object
// var x = {} syntax can’t do this as it always set the newly
//created object’s prototype to Object.prototype.
var obj = Object.create(parent.prototype);
// apply() method calls a function with a given this value
//and arguments provided as an array
parent.apply(obj, [prop]);
return obj
}
var duck = inheritFrom(Animal, 'duck');
console.log(duck.name); // ‘duck’收藏分享票数 0EN页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持原文链接:https://stackoverflow.com/questions/35263876
复制相关文章