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

yizhihongxing

关于“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日

相关文章

  • 关于javascript中this关键字(翻译+自我理解)

    关于JavaScript中this关键字的理解是前端开发中至关重要的一部分,因为它涉及到了JavaScript中的作用域和上下文。以下是关于JavaScript中this关键字的翻译和自我理解的攻略。 什么是this关键字? 在JavaScript中,this是一个特殊的关键字,它表示当前作用域下的对象。但是,它的值在执行上下文中是动态变化的,因此需要特别注…

    JavaScript 2023年6月10日
    00
  • JS获取url参数、主域名的方法实例分析

    JS获取URL参数的方法实例分析 在前端开发中,经常需要获取URL中的参数,以便进行相应的逻辑处理。下面我们将介绍JS获取URL参数的方法。 方法一:正则表达式获取 常见的方法是通过正则表达式获取。 /** * @description 通过正则表达式获取URL中指定参数的值 * @param {string} name 参数名 * @param {stri…

    JavaScript 2023年5月28日
    00
  • js通过循环多张图片实现动画效果

    下面是 “JS通过循环多张图片实现动画效果” 的完整攻略。 实现思路 通过JavaScript的循环语句(如setInterval、setTimeout等)来交替切换多张图片的显示,从而实现动画效果。具体实现步骤如下: 将需要播放的图片按照顺序依次存储在一个数组中 定义一个计数器 index,用于记录当前需要播放的图片的下标 使用setInterval或者s…

    JavaScript 2023年6月10日
    00
  • 实例讲解使用原生JavaScript处理AJAX请求的方法

    处理AJAX请求是现代Web开发中非常重要的一部分,可以轻松地从服务器加载数据并进行无需刷新页面的动态更新。原生JavaScript提供了一些内置的方法,可用于处理AJAX请求,并通过JavaScript代码与其他服务端技术交互。 以下是使用原生JavaScript处理AJAX请求的方法的完整攻略: 步骤一:创建XMLHttpRequest对象 XMLHtt…

    JavaScript 2023年6月11日
    00
  • Python用requests-html爬取网页的实现

    下面是一份完整的“Python用requests-html爬取网页的实现”攻略。 Python用requests-html爬取网页的实现 requests-html 是Python requests库的一个扩展,它为Python开发者提供了一个更为简洁、优雅的HTML解析器。 安装requests-html 要使用requests-html,您首先需要通过p…

    JavaScript 2023年5月28日
    00
  • Express的路由详解

    Express的路由系统非常强大,它能够帮助开发者分发请求并处理对应的响应。在这篇文章中,我将详细讲解如何使用Express的路由系统。 路由基础 在Express中,路由实际上就是一个处理程序(函数),当接收到特定的HTTP请求时,它会被执行。下面是一个基本的Express路由示例: const express = require(‘express’) c…

    JavaScript 2023年6月11日
    00
  • Angular服务Request异步请求的实例讲解

    下面是关于“Angular服务Request异步请求的实例讲解”的完整攻略。 标题:Angular服务Request异步请求的实例讲解 什么是Angular服务Request? Angular服务Request是Angular框架内置的一个服务,主要用于发送异步HTTP请求。Request服务是通过Angular注入系统使用的,因此我们只需要在组件或其他服务…

    JavaScript 2023年6月11日
    00
  • Document 对象的常用方法

    下面是关于 Document 对象的常用方法的详细讲解: Document 对象 Document 对象表示当前页面的文档。它是 window 对象的一个属性。可以通过 window.document 或者 document 来访问这个对象。 常用方法 以下是常用的 Document 对象方法: 1. getElementById 方法名:getElemen…

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