使用{}或new object()在JavaScript中创建空对象?
在JavaScript中创建空对象有两种不同的方法:使用{}或new object()在JavaScript中创建空对象?,javascript,arrays,object,javascript-objects,new-operator,Javascript,Arrays,Object,Javascript Objects,New Operator,在JavaScript中创建空对象有两种不同的方法: var objectA = {} var objectB = new Object() 脚本引擎处理它们的方式有什么不同吗?有什么理由用一个代替另一个吗 同样,也可以使用不同的语法创建空数组: var arrayA = [] var arrayB = new Array() 这基本上是一样的。使用您觉得更方便的任何东西。这些都有相同的最终结果,但我想简单地补充一点,使用文字语法可以帮助您习惯JSON的语法(JavaScript文字对象语法
var objectA = {}
var objectB = new Object()
脚本引擎处理它们的方式有什么不同吗?有什么理由用一个代替另一个吗
同样,也可以使用不同的语法创建空数组:
var arrayA = []
var arrayB = new Array()
这基本上是一样的。使用您觉得更方便的任何东西。这些都有相同的最终结果,但我想简单地补充一点,使用文字语法可以帮助您习惯JSON的语法(JavaScript文字对象语法的字符串化子集),因此这可能是一个很好的实践 还有一件事:如果忘记使用
new
操作符,可能会出现细微错误。因此,使用文字将帮助您避免这个问题
最终,这将取决于情况和偏好
var objectA = {}
速度更快,而且根据我的经验,更常用,因此最好采用“标准”并节省一些输入。对象和数组文字语法{}/[]是在JavaScript 1.2中引入的,因此在4.0之前的Netscape Navigator版本中不可用(并且会产生语法错误)
我的手指仍然默认说new Array(),但我是一个非常老的人。值得庆幸的是,Netscape 3并不是很多人今天必须考虑的浏览器…… < P>我相信在代码JavaScript VID中推荐代码< > {} /COD>作为一个很好的编码约定。代码>新建是伪经典继承所必需的。
var obj={}代码>方式有助于提醒您,这不是一种经典的面向对象语言,而是一种原型语言。因此,您真正需要new
的唯一时间是在使用构造函数时。例如:
var Mammal = function (name) {
this.name = name;
};
Mammal.prototype.get_name = function () {
return this.name;
}
Mammal.prototype.says = function() {
return this.saying || '';
}
然后它被这样使用:
var aMammal = new Mammal('Me warm-blooded');
var name = aMammal.get_name();
使用{}
相对于新对象
的另一个优点是,您可以使用它来处理JSON样式的对象文本 物体
使用newobject()没有任何好处代码>-而{}
可以使代码更加紧凑,可读性更强
对于定义空对象,它们在技术上是相同的。{}
语法更短、更简洁(Java语言更少),并允许您立即内联填充对象,如下所示:
var myObject = {
title: 'Frog',
url: '/img/picture.jpg',
width: 300,
height: 200
};
阵列
对于数组,使用newarray()几乎没有任何好处代码>超过[]代码>-有一个小的例外:
var emptyArray = new Array(100);
创建一个100项长的数组,其中所有插槽都包含未定义的-这在某些情况下可能很好/有用(例如(新数组(9))。join('Na-Na')+'Batman!'
)
我的推荐
切勿使用新对象()代码>-它比{}更笨重代码>并且看起来很傻
始终使用[]代码>-除非您需要快速创建具有预定义长度的“空”数组
是的,有区别,它们不一样。确实,您将获得相同的结果,但引擎以不同的方式为它们工作。其中一个是对象文字,另一个是构造函数,这是在javascript中创建对象的两种不同方式
var objectA = {} //This is an object literal
var objectB = new Object() //This is the object constructor
在JS中,一切都是一个对象,但您应该注意new object()的以下内容:它可以接收一个参数,根据该参数,它将创建一个字符串、一个数字,或者只是一个空对象
例如:新对象(1)
,将返回一个数字newobject(“hello”)
将返回一个字符串,这意味着对象构造函数可以根据参数将对象创建委托给其他构造函数,如string、number等。。。在管理动态数据以创建对象时,记住这一点非常重要
当您可以使用某种文字符号时,许多作者建议不要使用对象构造函数,这样您就可以确保所创建的内容是您希望在代码中包含的内容
我建议您进一步阅读javascript上文字符号和构造函数之间的差异,以了解更多细节。数组实例化性能
如果要创建无长度的数组,请执行以下操作:
var arr=[]代码>比var arr=new Array()快代码>
如果要创建具有特定长度的空数组:
var arr=新数组(x)代码>比var arr=[]快;arr[x-1]=未定义的
强>
有关基准,请单击以下内容:
但是,我不知道这两种方法的内存占用情况,我可以想象new Array()
会占用更多的空间。好的,只有两种不同的方法可以做同样的事情!一个称为对象文字
,另一个是函数构造函数
但请继续读下去,有几件事我想与大家分享:
使用{}
可以使代码更具可读性,同时创建对象的实例或其他不推荐使用的内置函数
此外,对象函数作为函数获取参数,如Object(params)
。。。但是,{}
是在JavaScript中启动对象的纯方法
使用object literal可以使您的代码看起来更干净,更易于其他开发人员阅读,并且它与JavaScript中的最佳实践保持一致
虽然Javascript中的对象几乎可以是任何对象,{}
只指向Javascript对象,为了测试其工作原理,请在Javascript代码或控制台中执行以下操作:
var n = new Object(1); //Number {[[PrimitiveValue]]: 1}
令人惊讶的是,它创造了一个数字
var a = new Object([1,2,3]); //[1, 2, 3]
这就是创建一个数组
var s = new Object('alireza'); //String {0: "a", 1: "l", 2: "i", 3: "r", 4: "e", 5: "z", 6: "a", length: 7, [[PrimitiveValue]]: "alireza"}
对于字符串
,这是一个奇怪的结果
因此,如果您正在创建一个对象,建议您使用object literal,使用标准代码并避免上述任何代码事故,根据我的经验,在性能方面使用{}
更好
Var Obj = {};
这是对我们来说最重要的
var Obj = new Obj()