《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型

yizhihongxing

《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型

引用类型

在 ECMAScript 中,引用类型指的是一种数据类型,这种数据类型是由多个不同的属性组成的对象。

Object 类型

Object 类型是 ECMAScript 中最基本的数据类型,也可以称之为引用类型的总称。对象是由键值对组成的无序集合。

创建一个 Object 类型的实例,可以使用 Object 构造函数,也可以使用对象字面量的方式。

var person = new Object();
person.name = '张三';
person.age = 18;

或者

var person = {
  name: '张三',
  age: 18
};

Array 类型

Array 类型也是 ECMAScript 中的一种引用类型,它是一组有序的数据的集合。数组是一种特殊的对象,它的键名是从 0 开始的数字下标。Array 实例具有一些非常有用的方法,如 push、pop、shift、unshift、splice 等等。

创建一个数组可以使用 Array 构造函数,也可以使用数组字面量的方式。

var arr1 = new Array(1, 2, 3); // 使用 Array 构造函数
var arr2 = [1, 2, 3]; // 使用数组字面量的方式

Date 类型

Date 类型是 ECMAScript 中的一种引用类型,它用于表示日期和时间,提供了有关日期和时间的操作方法。

创建一个 Date 类型可以使用 Date 构造函数,也可以使用 Date.parse() 函数。

var date1 = new Date(); // 获取当前时间
var date2 = new Date('2021-05-01T00:00:00'); // 使用日期格式字符串创建
var date3 = Date.parse('2021-05-01T00:00:00'); // 使用 Date.parse() 函数创建

RegExp 类型

RegExp 类型也是 ECMAScript 中的一种引用类型,它用于处理正则表达式。

创建一个正则表达式可以使用 RegExp 构造函数,也可以使用正则字面量的方式。

var reg1 = new RegExp('\\d+'); // 使用 RegExp 构造函数
var reg2 = /\d+/; // 使用正则字面量的方式

值类型和引用类型的区别

在 ECMAScript 中,数据类型可以分为值类型和引用类型。值类型包括数字、字符串、布尔值、null 和 undefined;引用类型包括对象、数组、函数等。

值类型的数据在赋值时,是将变量的值直接复制给目标变量,两个变量互不影响;而引用类型的数据在赋值时,只是将值的引用(地址)复制给目标变量,两个变量指向同一个地址,修改其中一个变量的值时,另一个变量的值也会发生变化。

var a = 1;
var b = a; // 值类型,b 的值为 1,与 a 互不影响
a = 2;
console.log(b); // 输出 1

var arr1 = [1, 2, 3];
var arr2 = arr1; // 引用类型,arr2 与 arr1 的值指向同一个地址
arr1.push(4);
console.log(arr2); // 输出 [1, 2, 3, 4]

示例一:引用类型的属性和方法

在 ECMAScript 中,引用类型的实例具有一些属性和方法。例如,Object 类型的实例具有 toString() 和 valueOf() 方法,Array 类型的实例具有 push() 和 concat() 方法。

var obj = {name: '张三', age: 18};
console.log(obj.toString()); // 输出 [object Object]
console.log(obj.valueOf()); // 输出 {name: "张三", age: 18}

var arr1 = [1, 2, 3];
arr1.push(4);
console.log(arr1); // 输出 [1, 2, 3, 4]

var arr2 = [5, 6, 7];
var arr3 = arr1.concat(arr2);
console.log(arr3); // 输出 [1, 2, 3, 4, 5, 6, 7]

示例二:值类型和引用类型在函数中的应用

在 ECMAScript 中,函数参数的传递采用的是值传递,因此对于值类型的数据,函数内对参数的修改不会影响到函数外的变量;而对于引用类型的数据,函数内对参数的修改会影响到函数外的变量。

function func1(num) { // 值类型参数
  num += 10;
  console.log(num);
}

var a = 5;
func1(a); // 输出 15
console.log(a); // 输出 5

function func2(arr) { // 引用类型参数
  arr.push(4);
  console.log(arr);
}

var b = [1, 2, 3];
func2(b); // 输出 [1, 2, 3, 4]
console.log(b); // 输出 [1, 2, 3, 4]

在 func1() 中对 num 的修改不会影响到 a 的值,这是因为 a 是一个值类型的变量,在函数 func1() 被调用时,将其值复制给了 num,num 的修改只影响到了 num 的值,不会影响 a 的值。

在 func2() 中对 arr 的修改会影响到 b 的值,这是因为 b 是一个引用类型的变量,在函数 func2() 被调用时,将其指向的地址复制给了 arr,arr 和 b 指向同一个地址,因此对 arr 的修改会同时修改 b 的值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 一文详解最常见的六种跨域解决方案

    一文详解最常见的六种跨域解决方案 Web应用程序中,由于同源策略的限制,导致跨域问题成为Web开发过程中的一个热门话题。本文将详细讲解最常见的六种跨域解决方案,分别是: JSONP CORS postMessage document.domain iframe 代理服务器 1. JSONP JSONP 是最容易学习和使用的解决跨域问题的方式之一。JSONP …

    JavaScript 2023年6月11日
    00
  • 获取焦点时,利用js定时器设定时间执行动作

    获取焦点时,利用js定时器设定时间执行动作的具体步骤如下: 1. 绑定获取焦点事件 首先,需要在html中为需要获取焦点的元素添加获取焦点事件。可以使用onfocus属性或者addEventListener方法添加事件监听器。 例如,我们可以为一个input元素添加获取焦点事件监听器,代码如下: <input type="text"…

    JavaScript 2023年6月11日
    00
  • JavaScript高级编程之Array的用法总结

    JavaScript高级编程之Array的用法总结 1. Array是什么? 在JavaScript中,Array是一种用来存储和操作一组值的有序集合,可以容纳多种类型的数据,并且可以动态扩展大小。Array是JavaScript编程中最常用的数据类型之一,也是编写JavaScript程序时必须掌握的重要内容之一。 2. Array的常用方法 2.1 增加和…

    JavaScript 2023年5月27日
    00
  • 基于js中的存储键值对以及注意事项介绍

    下面是关于“基于js中的存储键值对以及注意事项介绍”的完整攻略: 基于JS中的存储键值对 在JavaScript中,可以使用键值对存储数据。这被称为对象。对象是由键-值对构成的集合。可以通过键来访问值。 JavaScript中存储键值对的方式主要有以下三种: 1. 对象 对象是由键-值对构成的集合。可以使用对象字面量创建对象。对象字面量是由一对大括号包裹起来…

    JavaScript 2023年6月11日
    00
  • Javascript实现表单检验

    下面是Javascript实现表单检验的完整攻略。 什么是表单检验 表单检验是指在前端页面中对用户输入的数据进行验证的一种技术手段。它可以用来保证提交给后端的数据的正确性和完整性,从而提高数据的质量和可靠性。 Javascript实现表单检验的步骤 下面是Javascript实现表单检验的一般步骤: 获取表单元素及其值 根据指定的规则进行数据验证 根据验证结…

    JavaScript 2023年6月10日
    00
  • arcgis js完整悬停效果实现demo

    悬停效果实现原理 在实现悬停效果之前,我们需要先了解一下悬停效果的原理。悬停效果可以通过两种方式来实现,即CSS方式和JavaScript方式。其中,CSS方式仅能实现简单的悬停效果,而JavaScript方式能实现复杂的个性化悬停效果。 在arcgis js中,我们使用JavaScript方式来实现悬停效果。具体实现步骤如下: (1)通过添加事件监听器(如…

    JavaScript 2023年6月11日
    00
  • js编码之encodeURIComponent使用介绍(asp,php)

    JS编码之encodeURIComponent使用介绍(ASP, PHP) 在Web前端开发的过程中,经常需要对URL进行编码,以确保信息可以正确地传递和接收。在JavaScript中,我们可以使用encodeURIComponent函数来进行URL编码操作。本文将对encodeURIComponent的使用介绍进行详细讲解,并提供一些示例代码说明。 什么是…

    JavaScript 2023年6月1日
    00
  • 通过JS来判断页面控件是否获取焦点

    通过JS来判断页面控件是否获取焦点,可以使用DOM的focus和blur事件进行判断。当页面控件获得焦点时,触发focus事件;当失去焦点时,触发blur事件。下面我将介绍两个使用示例: 判断输入框是否获取焦点 为了判断输入框是否获取焦点,需要为该输入框添加focus和blur事件监听器。当input获取焦点时,显示提示框;当失去焦点时,移除提示框。 代码示…

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