笔记-js高级程序设计-5.引用类型

56 阅读3分钟

Object

创建

  1. new Object()
  2. 对象字面量 {}

访问属性

  1. 点表示法 o.name
  2. 方括号表示法 o['name']: 属性名是保留字或关键字、属性名中包含非字母非数字、属性名是一个变量时使用方括号表示法

Array

创建

  1. new Array(): 传入一个数值型的值时表示length,否则表示数组中每一项的值 (new 可以省略)
  2. 数组字面量 []

读写

  1. 使用下标: arr[0], arr[arr.length] = 'a'

检测

  1. value instanceof Array
  2. Array.isArray(value)

转换为字符串

  1. toString() / valueof(): 返回由数组中每个值的字符串形式拼接,以逗号分隔的字符串
  2. join('|')

栈方法

  1. push(): 接收任意数量的参数,添加到数组的最后,返回修改后数组的长度
  2. pop():没有参数,移除数组中的最后一项,返回移除的项

队列方法

  1. shift():没有参数,移除数组中的第一项,返回移除的项
  2. unshift():接收任意数量的参数,添加到数组的前端,返回修改后数组的长度

排序方法

  1. reverse(): 反转,修改原数组,返回排序后的数组。
  2. sort(): 默认按从小到大升序排列,会调用数据每一项的toString()方法,比较得到的字符串,返回排序后的数组。
    sort可以接受一个函数类型的参数(比较函数),用于指定排序规则。比较函数接收两个参数,规则是:
    • 第一个参数如果要位于第二个参数之前,返回负数
    • 第一个参数如果等于第二个参数,返回0
    • 第一个参数如果要位于第二个参数之后,返回正数

操作方法

  1. concat(): 接收任意数量的参数,参数可以是数组,创建一个新数组,不改变原数组
  2. slice(start, end): 接收1、2个参数,基于当前数组的几项创建一个新数组,不改变原数组
  3. splice(deleteIndex, deleteNum, ...insertValue): 改变原数组,返回删除的项

位置方法

  1. indexOf(value, ?startIndex): 使用全等查找,没找到返回 -1,找到返回下标
  2. lastIndexOf()

迭代方法

  1. every(fn(item, index, array))
  2. some()
  3. filter(): 返回通过检测的数组项组成的数组
  4. forEach():没有返回值
  5. map():返回每项调用之后的返回值组成的数组

归并方法

  1. reduce(fn(prev, cur, index, array)))
  2. reduceRight()

Date

获取毫秒数

  1. Date.parse(),接收一个表示日期的字符串,不能表示日期返回NAN
  2. Date.UTC(),接收年/月(0-11)/日/小时(0-23)/分钟/秒/毫秒,年月必填,日默认值为1,其他参数默认值为0。

new Date()

  1. new Date() 获取当前时区的日期时间对象
  2. new Date(m),m表示1970年1月1日到某个日期时间的毫秒数,得到这个日期时间的对象。由于这个毫秒数很难获取,所以我们也可以传入一个日期字符串,其中会先默认调用Date.parse()或者Date.UTC()转换为毫秒数。
var  a = new Date()  // Mon Jan 09 2023 21:45:52 GMT+0800 (中国标准时间)

var m = Date.parse('8/2/2020') // 1596297600000
var b = new Date(m) // Sun Aug 02 2020 00:00:00 GMT+0800 (中国标准时间)
// new Date()默认调用Date.parse(),可以简写成:
var c =  new Date('8/2/2020') // Sun Aug 02 2020 00:00:00 GMT+0800 (中国标准时间)