构造函数中的实例变量和静态变量 && new一个新对象发生了什么

79 阅读1分钟

构造函数

构造函数中有实例变量和静态变量

  • 实例变量:是在构造函数内,通过this添加的变量,实例变量只能通过实例化的对象来访问
  • 静态变量:在构造函数本身上添加的成员,只能通过构造函数来访问
function Star (name, age) {
    this.name = name
    this.age = age
}
Star.sex = '女'
let stars = new Star('小乔', 18)
console.log(stars) // {name: '小乔', 'age: 18'}  访问不到静态变量
console.log(Star.sex) // 女 
console.log(Star.name) // 访问不到实例变量

new 一个新对象发生了什么

  • 1.创建了一个空对象{}
  • 2.把空对象的原型链指向构造函数
  • 3.重新绑定this,使构造函数的this指向新对象
  • 4.为新对象属性,赋值构造函数的属性
  • 5.返回this,此时新对象拥有了构造函数的方法和属性

需要了解的是直接在构造函数中定义的方法是不共享的,在原型上定义的方法共享