JavaScript 基础——2.JavaScript 对象

一、JavaScript 对象

  • 对象:某种特定引用数据类型的实例
  • 在 JavaScript 中,任何一个引用值,最终都继承自 Object
  • 常用内置对象
    • Date
    • RegExp
  • 常用数据对象
    • Array
      • Array instanceof Object => true
    • Function
      • Function instanceof Object => true
  • 原始值的包装对象
    • Boolean
    • Number
    • String

二、单例内置对象

  • Global
    • 全局对象
    • 在浏览器端的实现为 window
  • Math
    • Math instanceof Object => true
    • JavaScript 中的数学库
    • 保存常用的数学公式、数学值和计算方法

三、常用的集合对象

1. Object

  • 创建方式
    • 字面量:{}
    • 构造函数:new Object()
    • ES6 之后,可以根据已有对象创建:Object.create(oriObject)
  • 常用的静态方法
    • Object.is(a, b)
    • Object.create(obj)
  • Object.create(null)
    • 创建一个没有原型的对象
  • 特性
    • 访问不存在的属性值时,得到的结果为 undefined

2. Array

  • 创建方式
    • 字面量:[]
    • 构造函数:new Array(length)/new Array(v1, v2)
    • ES6 之后,可根据任意可迭代对象创建:Array.from(iterableObject)
  • 特性
    • 最终继承自 Object
    • 任意 index 均可访问
    • 访问没有值的 index 时,得到的结果为 undefined
    • 如果给超出长度的 index 位置设置值,则数组长度会变为 index+1,没有设置值的位置都以 Empty 填充
      • 注意:Empty 不是指 arr[key] = Empty,仅仅只是一个表示方法而已。
      • 不同浏览器对 Empty 的表示不同,可自行尝试,读取这些 index 的值时,得到的结果都是 undefined。
  • 常用方法
  • 其它
    • 将数组作为栈:
      • 头栈:unshift(item)/shift()
      • 尾栈:push(item)/pop()
    • 将数组作为队列:
      • 尾队列 (尾进首出) :push(item)/shift()
      • 首队列 (首进尾出) :unshift(item)/pop()

3. TypedArray

  • ArrayBuffer
  • SharedArrayBuffer
  • DataView
    • Int8, Uint8
    • Int16, Uint16
    • Int32, Uint32, Float32
    • Float64

4. 映射

  • Map
    • 真正的 key/value 存储机制
    • 任意数据类型的值都可以作为 key
    • 常用方法:
      • set(key, value)
      • get(key)
      • has(key)
      • delete(key)
      • clear()
      • keys()
      • entries()
      • values()
  • WeakMap
    • 只能将引用值作为 key
    • 与 Map 相比,没有的方法:
      • clear()
      • keys()
      • entries()
      • values()
    • 常用方法:
      • set(key, value)
      • get(key)
      • has(key)

5. 集合

  • 特点:
    • 集合内不会存在完全相同的两个值
      • 两个完全相同的原始值
      • 两个完全相同的引用值
      • 注意:引用值的深拷贝结果是允许存在的,因为它们对应不同的引用值
  • Set
    • 常用方法:
      • add(item)
      • has(item)
      • delete(item)
      • keys()
      • entries()
      • values()
  • WeakSet
    • 集合内的元素只能是引用值
    • 常用方法:
      • add(item)
      • has(item)
      • delete(item)
    • 没有的方法
      • keys()
      • entries()
      • values()

三、小 tips

  • 关于数组
    • 数组可以取任意 index (>=0) 的值,也可以给任意 index (>=0) 的索引设置值
      • 个人理解:其原因是 Array 最终继承自 Object
      • Object 可以给任意属性设置值,获取不存在的属性时,得到的结果为 undefined
      • 但如果设置的属性名 (key) 是数字, Array 做了额外的处理:
        • key >= length:扩展数组长度,且将 key 对应的 value 设置为指定值,不连续的那一段则使用 Empty 填充
    • 数组实例的属性名不一定是自然数,也可以是非数字的属性名
  • 关于集合 Set
    • 个人理解:可以简单地理解为 key 和 value 相同的 Map
    • Set 实例的 keys() 和 values() 获取到的结果是一样的,都是由实例内每个元素组成的一个数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值