通读红宝书系列二:引用类型

181 阅读3分钟

什么是引用类型

引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型的值是引用类型的一个实例。ECMAScript提供了很多原生的引用类型,如Object、Array、function等,请看以下代码:

const person = new Object();

除了ESMAScript提供的原生引用类型,我们也可以自定义引用类型。

Object类型

1、访问对象属性

一般我们使用点表示法访问属性,但在js中也可以使用方括号表示法访问属性,在功能上两者是一致的。方括号表示法的主要优点是可以通过变量访问属性,例如:

const person = {name: 'xxq', age: 10};
const propertyName = 'name';
person[propretyName] // xxq

如果有一些属性名中包含导致语法错误的字符,或者使用了保留字,也可以使用方括号表示法,例如:

person['first name'] = 'x';

'first name'中包含空格,不能通过点表示法访问,这时候方括号的又有优势了。

Array类型

1、length属性

array的length属性并不是只读的,通过设置这个属性,可以从数组的末尾添加新项或移除数据。如果我们单纯的将array的length设置成大于数组项数的值,则新增的每一项的值都为undefined。
利用length属性,我们可以方便的在数组末尾添加新项,如下:

let arr = ['red','orange'];
arr[arr.length] = 'yellow';
arr[arr.length] = 'green';
arr // ['red','orange', 'yellow', 'green']

2、强大的splice方法

splice()的主要用途是向数组的中部插入项,但使用这个方法的方式有以下三种:
删除:可以删除任意数量的项。指定两个参数:要删除的第一项的位置和要删除的个数,例如 splice(0, 2)会删除数组前两项。
插入:可以向指定位置插入任意数量的项。指定三个参数:起始位子、0(要删除的项数,我们要实现替换需要指定为0),要插入的项(可以传多个),例如 splice(2, 0, 'red', 'green');则会从数组的位置2开始插入字符串'red','green'。
替换:可以向指定位置插入任意数量的项,同时删除任意数量的项。指定三个参数:起始位置,要删除的项数,和插入的任意数量的项(插入的项数不需要与删除的项数相等),例如 splice(2, 1, 'red', 'green') 会从位置2开始,删除1项,然后再从位置2开始插入字符串'red','green'。
splice会返回一个数组,包含被删除的项,若不存在删除,则返回空数组。

Date类型

1、Date.parse()和Date.UTC()

两者都返回日期的毫秒数。
Date.parse()没有规定应该支持哪种日期格式,因此这个方法的行为因实现而异。普遍浏览器会支持以下几种日期格式:

  • 月/日/年;
  • 英文月 日,年;如January 12,2004;
  • ISO 8601扩展格式 YYYY-MM-DD HH:mm:ss

Date.UTC()方法的参数分别为年份、基于0的月份、月中的哪一天、小时数(0-23)、分钟、秒钟、毫秒。前两个为必须参数。Date的构造函数会模仿Date.UTC()但是有一点不同,就是日期与时间都是基于本地时区而非GMT创建。如下:

const a = new Date(2004, 4, 5, 11,11)// 本地时区2005年5月5日11时11分

写文章太累了。今天先写到这里吧!后面再补充。