js对象的读取速度实例详解

关于“js对象的读取速度实例详解”,我会给出完整的攻略,以下是具体的内容:

1. 什么是js对象

JS对象是指在JS中可以通过{}或者new Object()定义出的对象,它是一个无序属性的集合,每个属性都是由属性名和属性值所组成。其中,属性名可以是字符串或者Symbol类型,属性值可以是任何JS数据类型。

2. js对象的读取速度

在JS编程中,对象的读取速度经常是一个值得关注的问题,在对象成员访问的时候如何进行快速读取变得非常重要,通常有一下几种方法:

  • 直接使用对象属性
  • 使用数组的下标
  • 使用变量保存对象属性
  • 使用对象属性的值作为属性名来访问对象中的属性

下面通过两个示例来查看这些读取对象的方法的效果,以及他们的优缺点。

3. 示例1

var arr = [];
for (let i = 0; i < 10000; i++) {
  arr.push({
    name: '小龙' + i,
    age: i + 18
  });
}

console.time('1.直接使用对象属性');
for (let i = 0; i < arr.length; i++) {
  let name = arr[i].name;
  let age = arr[i].age;
}
console.timeEnd('1.直接使用对象属性');

console.time('2.使用数组的下标');
for (let i = 0; i < arr.length; i++) {
  let name = arr[i]['name'];
  let age = arr[i]['age'];
}
console.timeEnd('2.使用数组的下标');

console.time('3.使用变量保存对象属性');
for (let i = 0; i < arr.length; i++) {
  let obj = arr[i];
  let name = obj.name;
  let age = obj.age;
}
console.timeEnd('3.使用变量保存对象属性');

console.time('4.使用对象属性的值作为属性名来访问对象中的属性');
for (let i = 0; i < arr.length; i++) {
  let name = arr[i]['name'];
  let age = arr[i]['age'];
}
console.timeEnd('4.使用对象属性的值作为属性名来访问对象中的属性');

在这个示例中,我们生成了一个非常大的数组(10000个对象),然后分别测试了4种不同的读取对象属性的方法,并记录了每种方法的耗时。

示例结果如下:

1.直接使用对象属性: 1.014ms
2.使用数组的下标: 1.035ms
3.使用变量保存对象属性: 0.58ms
4.使用对象属性的值作为属性名来访问对象中的属性: 0.659ms

通过这个例子,我们可以看出,方法3(使用变量保存对象属性)和方法4(使用对象属性的值作为属性名来访问对象中的属性)是最快的方法,而方法1(直接使用对象属性)和方法2(使用数组的下标)的速度则相对较慢。原因也很简单,在读取属性的时候,JS引擎需要执行大量的寻址计算,这时候将对象的引用保存到变量中可以减少计算消耗,并且使用属性值作为属性名直接访问对象属性可以最大限度的提高读取速度。

4. 示例2

接下来我们再来看一个使用对象属性的值作为属性名来访问对象中的属性的示例:

console.time('1.直接访问');
let obj = {
  name: '小龙',
  age: 24,
  weight: 70,
  high: 180
}
for (let i = 0; i < 1000; i++) {
  let name = obj.name;
  let age = obj.age;
  let weight = obj.weight;
  let high = obj.high;
}
console.timeEnd('1.直接访问');

console.time('2.使用变量访问');
let obj2 = {
  name: '小龙',
  age: 24,
  weight: 70,
  high: 180
}
for (let i = 0; i < 1000; i++) {
  let o = obj2;
  let name = o.name;
  let age = o.age;
  let weight = o.weight;
  let high = o.high;
}
console.timeEnd('2.使用变量访问');

console.time('3.使用属性值作为属性名访问');
let obj3 = {
  name: '小龙',
  age: 24,
  weight: 70,
  high: 180
}
for (let i = 0; i < 1000; i++) {
  let name = obj3['name'];
  let age = obj3['age'];
  let weight = obj3['weight'];
  let high = obj3['high'];
}
console.timeEnd('3.使用属性值作为属性名访问');

这个示例中,我们测试了三种不同的访问对象属性的方法,计算每种方法循环1000次时的总耗时

示例结果如下:

1.直接访问: 0.023ms
2.使用变量访问: 0.023ms
3.使用属性值作为属性名访问: 0.088ms

通过这个例子我们可以看出,直接访问对象属性和使用变量访问对象属性的速度几乎相同,并且比使用属性值作为属性名访问对象属性要快得多。这是因为属性值作为属性名来访问对象属性会使用额外的寻址计算,增加了额外的计算消耗,因此速度比直接访问和使用变量访问慢。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js对象的读取速度实例详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 小程序使用webview内嵌h5页面 wx.miniProgram.getEnv失效问题

    小程序使用webview内嵌H5页面时,经常会遇到wx.miniProgram.getEnv失效的问题。这种问题一般是由于小程序版本升级所引起的。在小程序v2.0.0之前,我们可以使用wx.miniProgram.getEnv方法来判断当前页面是否在小程序中运行,但是在v2.0.0版本之后,这个方法已经失效了。这个问题需要通过一些替代方案来解决。下面,我们就…

    JavaScript 2023年6月11日
    00
  • 如何屏蔽防止别的网站嵌入框架代码

    首先,屏蔽防止别的网站嵌入框架代码,需要通过设置 HTTP 头来实现。具体步骤如下: 在服务器端,设置 HTTP 响应头 X-Frame-Options。 X-Frame-Options 可以设置三个参数: DENY:禁止该页面被任何网站嵌入到 iframe 中。 SAMEORIGIN:只允许该页面在相同域名下的网站中被嵌入到 iframe 中。 ALLOW…

    JavaScript 2023年6月11日
    00
  • 常用的Javascript设计模式小结

    下面是针对“常用的Javascript设计模式小结”的完整攻略: 常用的Javascript设计模式小结 什么是设计模式? 设计模式是解决一类问题的经验总结和传递,它不是具体的代码实现,而是解决问题的一种思想方式。在开发中,我们可以借助设计模式来提高代码可读性、可维护性和可扩展性。 Javascript中常用的设计模式 在Javascript中,常用的设计模…

    JavaScript 2023年5月28日
    00
  • js 动态添加元素(div、li、img等)及设置属性的方法

    以下是关于js动态添加元素及设置属性的方法的完整攻略: 使用createElement方法创建新元素 使用createElement方法可以在JavaScript中创建一个新的元素节点。该方法需要传入参数表示要创建的元素类型,例如“div”、“img”等。创建完元素后,可以使用appendChild方法将其添加到页面中。 // 创建一个新的div元素 con…

    JavaScript 2023年6月10日
    00
  • Python使用cn2an实现中文数字与阿拉伯数字的相互转换

    Python使用cn2an实现中文数字与阿拉伯数字的相互转换 简介 在跨语言、国际化的情况下,数字的表述方式不同可能会导致沟通上的障碍。本文将介绍一种Python第三方库cn2an,它可以实现中文数字和阿拉伯数字之间的相互转换,方便双方交流和处理。 安装cn2an cn2an 可以通过 pip 安装: pip install cn2an 中文数字转阿拉伯数字…

    JavaScript 2023年6月11日
    00
  • 写出更好的JavaScript程序之undefined篇(中)

    针对“写出更好的JavaScript程序之undefined篇(中)”这篇文章,我来进行详细的讲解攻略,包括以下几个方面: 理解undefined的含义 undefined是JavaScript中的一个关键字,指的是一个变量或属性没有被赋值,或者被赋值为undefined。例如以下代码片段中的变量a和b都是undefined: var a; var b = …

    JavaScript 2023年5月27日
    00
  • xWin之JS版(2-26更新)第1/2页

    xWin之JS版(2-26更新)攻略 介绍 xWin之JS版是一款轻量级的JS框架,支持快速构建Web应用程序,它提供了丰富的组件和工具,可以大量减少Web开发的工作量,我们下面将会详细讲解如何使用xWin之JS版。 安装 首先,我们需要在项目目录下引入xWin之JS版文件,可以通过以下方式获取: <head> <meta charset=…

    JavaScript 2023年6月11日
    00
  • js获取html参数及向swf传递参数应用介绍

    下面是针对“js获取html参数及向swf传递参数应用介绍”的完整攻略。 1. JS获取HTML参数 1.1 通过 URL 参数获取 JS获取 HTML 参数的最简单方法是解析 URL 参数。通过 window.location.search 可以获取到 URL 中的查询字符串部分,这个部分包含了所有的参数和它们的值。 示例: const queryStri…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部