JS对象定义

对象是一种无序的数据集合, 表现形式是键值对的集合.

声明对象

声明对象有两种方式:
方式一

  1. let obj = {}

方式二

  1. let obj = new Object({})

键名命名规则

键名必须是字符串, 任意字符串甚至是空字符串都行, 它不是标识符.

定义键名的时候引号也可以省略, 这时候只能以标识符的规则来写, 但它依然是一个字符串

如何删除对象的属性

使用 delete 关键字

  1. delete obj.name //点形式
  2. delete obj.['name']

检测是否删除成功删除

使用 in 关键字, 判断属性是否存在于对象中.

  1. 'name' in obj // 值为true表示属性还存在于对象中, 值为false表示已经成功删除

如何查看对象属性

根据单个属性查看

有两种方式查看, 一是点语法 obj.key ; 二是中括号语法 obj['key'], 两者都可以. 需要注意的是, 不要漏掉引号, 写成 obj[key]的话, 这里的key是指一个变量, 而不是字符串.

使用 Object.keys()方法

  1. Object.keys(obj) //查看属性
  2. Object.values(obj) // 查看属性值

可以生成一个包含 obj 所有属性的的数组

查看属性和属性值

使用 console.dir() 方法

  1. console.dir(obj)

打印出 包含属性和属性值的一个伪数组, 它其实是一个对象

判断一个属性是自身属性还是共有属性

使用 hasOwnProperty()

  1. obj.hasOwnProperty("toString") //查看 tostring 属性是否是自身属性, 结果是false说明不是.

打印所有的属性和属性值

使用 Object.entries() 方法

  1. Object.entries(obj) //会打印出多个数组出来

打印所有的属性和属性值对, 以二维数组的形式.

如何新增或修改对象

直接赋值

使用 obj.name = 'jesse'就可以.

如果已有 ‘name’ 属性就修改, 没有就新增.

批量复制

Object.assign() 方法接受两个参数. 下面的例子给对象 obj 批量增加了 p1, p2 和 p3 三个属性

  1. Object.assign(obj, {
  2. p1: 1,
  3. p2: 2,
  4. p3: 3
  5. })

修改共有属性

通过 Object.prototype.toString() 来修改对象的共有属性(原型).

构造函数与原型

new 操作

new X() 的时候发生了下面四件事

  • 自动创建空对象
  • 为空对象关联原型 X.prototype
  • 自动将空对象作为this关键字运行构造函数
  • 自动return this

    构造函数X

    构造函数定义: 专门用于创建对象的函数, 一般用大写字母开头表示.
    函数X 作用:

  • X函数本身负责给对象本身添加属性

  • X.prototype对象负责保存对象的共有属性