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日

相关文章

  • JavaScript实现手写promise的示例代码

    下面是详细讲解“JavaScript实现手写promise的示例代码”的完整攻略。 理解promise 在讲解如何手写promise之前,我们先来理解一下promise,它是一个用来处理异步操作的对象。在promise中,一个异步操作被包装成一个状态机对象,该状态机由三个状态组成——pending(等待中)、fulfilled(完成)、rejected(拒绝…

    JavaScript 2023年5月28日
    00
  • javascript实现获取服务器时间

    获取服务器时间是Web开发中经常用到的一个功能,javascript可以通过AJAX技术向服务器发送请求获取服务器时间。以下是获取服务器时间的完整攻略: 步骤1. 创建一个API 首先,需要在服务器端创建一个API,用于返回服务器当前时间。API的地址可以是一个后端程序文件或者一个接口。 以php为例,可以通过以下代码实现: <?php header(…

    JavaScript 2023年5月27日
    00
  • 你有必要知道的25个JavaScript面试题

    下面是详细讲解“你有必要知道的25个JavaScript面试题”的完整攻略。 介绍 在面试过程中,JavaScript是一个非常重要的方面,掌握常见的JavaScript面试题可以帮助我们更好地准备面试。这里整理了25个常见的JavaScript面试题供大家参考。 问题列表 1. typeof null 返回什么? typeof null 返回 “objec…

    JavaScript 2023年5月28日
    00
  • 在Webpack中用url-loader处理图片和字体的问题

    在Webpack中使用url-loader处理图片和字体文件,可以方便地将这些文件打包到生成的最终bundle文件中,从而加快页面的加载速度。下面是一份完整的攻略,包括安装必要的loader、配置Webpack以及两个例子。 安装必要的loader 首先,为了使用url-loader,我们需要安装它。可以使用npm或者yarn。 使用npm: npm ins…

    JavaScript 2023年5月19日
    00
  • JavaScript实现加密与解密详解

    JavaScript实现加密与解密详解 在现代应用程序中,数据的安全性非常重要。其中一种保护数据安全的方式是使用加密算法。JavaScript是一种流行的编程语言,经常用于在浏览器中实现安全性。 本文将详细讲解使用JavaScript实现加密和解密的详细步骤,包括两个示例。 加密 Base64加密 Base64是一种用于数据传输的编码方案。它将任意二进制数据…

    JavaScript 2023年5月19日
    00
  • JavaScript CSS优雅实现网页多主题风格换肤功能详解

    JavaScript CSS优雅实现网页多主题风格换肤功能详解 什么是多主题风格换肤? 多主题风格换肤是指让用户可以在网页中自行选择不同的样式主题,以达到更好的用户体验和用户喜爱的效果。这种功能广泛运用在网站的日间模式与夜间模式之间的切换。 如何实现多主题风格换肤? 实现多主题风格换肤需要掌握两个关键技能: CSS变量 JavaScript应用CSS类 CS…

    JavaScript 2023年5月19日
    00
  • 详解JavaScript常量定义

    下面我将详细讲解“详解JavaScript常量定义”的完整攻略。 什么是JavaScript常量 在JavaScript中,声明一个变量的方式有两种:使用var关键字声明和使用const关键字声明。其中const声明的变量就是JavaScript常量。 常量是指在程序执行过程中其值不可变的变量。一旦用const关键字声明一个变量,就不能再对它进行赋值操作,否…

    JavaScript 2023年6月11日
    00
  • 微信小程序绑定手机号获取验证码功能

    下面是关于“微信小程序绑定手机号获取验证码功能”的完整攻略: 一、注册云服务 首先需要在微信公众平台中注册云服务,并且开通云开发环境。具体步骤如下: 登录微信公众平台,在左侧菜单中找到“设置”选项并点击 在“设置”页面中选择“开发者工具”,进入到开发者工具页面 点击“云开发”选项,并进行云服务注册和环境创建 二、创建验证码云函数 创建一个名为“getCode…

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