一. 创建对象的三种方式
1.1 利用对象字面量创建对象
const p = {
name:"kebi"
}
1.2 利用 new Object 创建对象
// const obj = new Object()
// obj.uname = 'maidi'
// console.log(obj)
const obj = new Object({ uname: 'maidi' })
1.3 利用构造函数创建对象
大写字母开头的函数
说明:
- 使用 new 关键字调用函数的行为被称为实例化
- 实例化构造函数时没有参数时可以省略 ()
- 构造函数内部无需写return,返回值即为新创建的对象
- 构造函数内部的 return 返回的值无效,所以不要写return
- new Object() new Date() 也是实例化构造函数
// 1. 构造函数
function Person(uname, age) {
this.uname = uname
this.age = age
}
Person.sex = "99"
// 2.new 关键字调用函数
const p = new Person('老弟', 6)
console.log(p)
实例化执行过程 说明:
- 创建新对象
- 构造函数this指向新对象
- 执行构造函数代码,修改this,添加新的属性
- 返回新对象
二. 实例成员&静态成员
静态成员 : 构造函数上的属性和方法称为静态成员(静态属性和静态方法)
实例成员: 实例对象的属性和方法即为实例成员(实例属性和实例方法)
// 构造函数
function Person(uname, age) {
// 省略实例成员
}
// 静态属性
Person.eyes= 2
Person.arms= 2
// 静态方法
Person.walk = function(){
// this指向Person
console.log(this.eyes)
}
说明:
- 构造函数的属性和方法被称为静态成员
- 一般公共特征的属性或方法静态成员设置为静态成员
- 静态成员方法中的 this 指向构造函数本身
通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员。
// 构造函数
function Person(uname, age) {
//实例对象中动态添加属性
this.name = "kebi"
//实例对象添加方法
this.sayHi = function (){
console.log("Hi")
}
}
// 实例化 p1是实例对象
// p1 实际就是 构造函数内部的this
const p1 = new Person()
console.log(p1)
console.log(p1.name) // 访问实例属性
p1.sayHi() // 调用实例方法
说明:
- 实例对象的属性和方法即为实例成员
- 为构造函数传入参数,动态创建结构相同但值不同的对象
- 构造函数创建的实例对象彼此独立互不影响。