深入对象
创建对象的三种方式
-
利用字面量创建对象
const obj = { name: 'lily' }
-
利用new Object创建对象
const obj2 = new Object() // 创建一个空对象 obj2.name = 'lily' console.log(obj2) // { name: 'lily' }
-
利用构造函数创建对象
利用构造函数创建对象
构造函数是一种特殊的函数,主要用来初始化对象。
使用场景:用来快速创建多个类似的对象。
基本语法
构造函数命名时约定以大写字母开头,它们只能由new操作符来执行。
function Person(name, age) {
this.name = name
this.age = age
}
const p = new Person('lily', 18)
console.log(p) // { name: 'lily', age: 18 }
说明:
- 使用new关键字调用函数的行为被称为实例化
- 实例化构造函数时没有参数时可以省略 ()
- 构造函数内部无需写return,返回值即为新创建的对象
- 构造函数内部的return返回的值无效,所以不要写return
- new Object()和new Date()也是实例化构造函数
实例化执行过程
- 创建新对象
- 构造函数this指向新对象
- 指向构造函数代码,修改this,添加新的属性
- 返回新对象
实例成员和静态成员
实例成员:通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员(实例属性和实例方法)。
-
为构造函数传入参数,创建结构相同但值不同的对象
-
构造函数创建的实例对象彼此独立互不影响
静态成员:构造函数的属性和方法被称为静态成员(静态属性和静态方法)
- 静态成员只能构造函数来访问
- 静态方法中的this指向构造函数
- 静态成员举例:Date.now()、Math.PI()、Math.random()