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日

相关文章

  • Area 区域实现post提交数据的js写法

    Area 区域是HTML表单元素的一种。它允许在一个可编辑的区域内输入文本或代码。使用JavaScript,我们可以使用它来实现提交数据的功能,这些数据可以使用POST方法发送到服务器。 以下是实现Area 区域Post提交数据的基本步骤: 创建一个表单元素,其中包含一个Area 区域,指定一个ID用于JavaScript操作。 <form> &…

    JavaScript 2023年6月11日
    00
  • 7道关于JS this的面试题,你能答对几个

    7道关于JS this的面试题 问题1: this指向谁? this关键字是在函数执行时被解析的。它指向一个对象,这个对象是在调用函数时传入的。或者说,在调用函数时,this的值由函数的调用方式来决定。例如: function person() { this.name = "Tom"; } var a = new person(); co…

    JavaScript 2023年6月10日
    00
  • JS如何判断json是否为空

    下面是关于“JS如何判断JSON是否为空”的完整攻略。 判断JSON对象是否为空的方法 在 JavaScript 中,可以使用以下两种方法来判断 JSON 对象是否为空: 判断 JSON 对象的长度是否为 0 判断 JSON 对象是否为空对象 下面我们将分别介绍这两种方法的具体实现。 判断 JSON 对象的长度是否为 0 JSON 对象是 JavaScrip…

    JavaScript 2023年5月27日
    00
  • Hutia 的 JS 代码集

    Hutia 的 JS 代码集 什么是 Hutia 的 JS 代码集? Hutia 的 JS 代码集是一个由 Hutia 响应式模板引擎作者编写的 JavaScript 代码集,可以让前端开发者更高效地完成常见的前端开发任务。它包括了一些经常需要用到的常用函数和工具,可以用于各种类型的网站开发,包括响应式网站、Web 应用程序以及自适应 UI 设计等。 如何使…

    JavaScript 2023年6月11日
    00
  • Three.Js实现看房自由小项目

    Three.js实现看房自由小项目攻略 介绍 Three.js是一个基于WebGL的JavaScript 3D库,它可以帮助我们在Web端实现非常炫酷的3D视觉效果,完美地展现产品的三维模型,同时支持丰富的材质、灯光、粒子等效果,可以方便地实现交互效果。 在这篇攻略中,我们将使用Three.js来实现一个看房自由小项目。这个小项目将会模拟一个虚拟房屋,让用户…

    JavaScript 2023年6月11日
    00
  • js实现统计字符串中特定字符出现个数的方法

    要实现统计字符串中特定字符出现次数的方法,可以采用循环遍历每个字符,然后用条件判断来判断该字符是否为目标字符,进而计数的方式来实现。 以下是实现该方法的完整攻略: 步骤1:定义一个函数 首先需要创建一个函数来统计字符串中特定字符出现的次数。下面的代码演示了如何定义名为“countChar”的函数,并将一个字符串和目标字符作为参数传递给它。 function …

    JavaScript 2023年5月28日
    00
  • JavaScript 对象字面量讲解

    下面是关于JavaScript对象字面量的全面讲解: JavaScript 对象字面量讲解 JavaScript 对象是一种复合数据类型,可以包含键值对,并且可以使用点语法进行访问。对象通常用于封装相关的数据和功能,并将它们组织在一起。 对象字面量是创建 JavaScript 对象最常用的方法之一。对象字面量是使用花括号({})定义对象,每个键值对之间使用冒…

    JavaScript 2023年5月27日
    00
  • javascript 对象比较实现代码

    如果要实现JavaScript对象的比较,可以使用比较运算符==和===来比较两个对象(当然,也可以使用Object.is()方法进行比较)。但是,如果是比较两个具有同样键名和键值对的对象时,这些运算符和方法都不能完成任务。因为这些运算符和方法只能比较变量存储的是对象引用,而不是对象自身。因此,我们需要使用自定义函数来比较两个对象的每个键名和键值对是否相等。…

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