使用{}或new Object()在JavaScript中创建一个空对象?

2020/09/29 21:01 · javascript ·  · 0评论

在JavaScript中两种不同的创建空对象的方法:

var objectA = {}
var objectB = new Object()

脚本引擎如何处理它们?有什么理由要使用另一个?

同样,也可以使用不同的语法创建一个空数组:

var arrayA = []
var arrayB = new Array()

对象

使用new Object();- 没有任何好处-却{};可以使您的代码更紧凑,更易读。

对于定义空对象,它们在技术上是相同的。{}语法是短,整齐(不以Java-ISH),并让你瞬间填充对象内联-就像这样:

var myObject = {
        title:  'Frog',
        url:    '/img/picture.jpg',
        width:  300,
        height: 200
      };

数组

对于数组,使用new Array();over 几乎没有任何好处[];-一个小例外:

var emptyArray = new Array(100);

创建一个100项长的数组,其中所有插槽都包含undefined-在某些情况下(例如(new Array(9)).join('Na-Na ') + 'Batman!'可能很好/有用

我的建议

  1. 永远不要使用new Object();-它比现在笨重,{};而且看起来很傻。
  2. 始终使用[];-除非需要快速创建具有预定义长度的“空”数组。

是的,有区别,它们是不同的。的确,您将获得相同的结果,但引擎对两者的工作方式却不同。其中一种是对象文字,另一种是构造函数,这是在javascript中创建对象的两种不同方式。

var objectA = {} //This is an object literal

var objectB = new Object() //This is the object constructor

在JS中,所有内容都是一个对象,但是您应该通过new Object()注意以下几点:它可以接收一个参数,并且根据该参数,它将创建一个字符串,一个数字或一个空对象。

例如:new Object(1),将返回一个数字。new Object("hello")将返回一个字符串,这意味着对象构造函数可以根据参数将对象创建委托给其他构造函数(例如字符串,数字等)。在管理动态数据时,记住这一点非常重要创建对象

许多作者建议在可以使用某种文字表示法时不要使用对象构造函数,因为这样可以确保所创建的内容与代码中所期望的内容相同。

我建议您进一步阅读javascript上的文字表示法和构造方法之间的区别,以找到更多详细信息。

它们具有相同的最终结果,但我只是补充一下,使用文字语法可以帮助人们习惯于JSON语法(JavaScript文字对象语法的字符串化子集),因此,进入这可能是一个好习惯。

另一件事:如果您忘记使用new运算符,则可能会有细微的错误因此,使用文字将帮助您避免该问题。

最终,它将取决于情况以及偏好。

对象和数组文字语法{} / []是JavaScript 1.2中引入的,因此在4.0之前的Netscape Navigator版本中不可用(并且会产生语法错误)。

我的手指仍然默认使用new Array(),但是我是一个非常老的人。幸运的是,Netscape 3并不是当今许多人不得不考虑的浏览器...

var objectA = {}

速度更快,以我的经验,更常用,因此最好采用“标准”并保存一些键入内容。

我相信{}这里的一种Javascript视频中推荐这样做是一种很好的编码约定。new对于伪古典继承是必需的。这种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();

与之{}相反使用的另一个优点new Object是您可以使用它来执行JSON样式的对象文字。

数组实例化性能

如果要创建没有长度的数组:

var arr = []; 比...快 var arr = new Array();

如果要创建具有一定长度的空数组:

var arr = new Array(x);比...快var arr = []; arr[x-1] = undefined;

对于基准,请单击以下内容:https : //jsfiddle.net/basickarl/ktbbry5b/

但是我不知道两者的内存占用情况,我可以想象这new Array()会占用更多空间。

本质上是同一件事。使用任何您发现更方便的方式。

好的,只有两种不同的方法可以做同样的事情!一个被调用object literal,另一个被称为函数constructor

但是请继续阅读,我想分享几件事:

使用{}可以使您的代码更具可读性,同时Object不建议您创建或其他内置函数的实例...

另外,对象函数会像它一样获取参数,就像Object(params)...,但这{}是在JavaScript中启动对象的纯净方法...

使用对象文字可以使您的代码对其他开发人员来说更简洁易读,并且符合JavaScript的最佳做法...

尽管Javascript中的Object几乎可以是任何东西,但{}仅指向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"}

和这个奇怪的结果String

因此,如果要创建对象,建议使用对象文字,以使用标准代码并避免发生上述任何代码事故,{}以我的经验,最好还是使用性能明智的方法

本文地址:http://javascript.askforanswer.com/shiyonghuonew-objectzaijavascriptzhongchuangjianyigekongduixiang.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!