js中class的构造函数的this指向问题

场景

  • 定义了一个类的构造函数需要的参数是一个对象,而该对象的属性对class实例的属性进行了调用或修改,也就是在对象中使用了this

问题

  • 示例
    class Person {
      name: ''
      age: 0
      sex: 0
      setName: null
      constructor (person) {
        this.setName = person.setName
      }
    }
    const test = {
      setName: function (name) {
        this.name = name
      }
    }
    const p1 = new Person(test)
    p1.setName('小明')
    
  • 这时p1.setName('小明')就会报错,说setName里的this是undefined

解决

  • 这就需要在class的构造函数中改变参数的this指向,指向自己
    class Person {
      name: ''
      age: 0
      sex: 0
      setName: null
      constructor (person) {
        this.setName = person.setName.bind(this)
      }
    }
    
posted @ 2023-05-08 10:47  Mizuki-Vone  阅读(93)  评论(0编辑  收藏  举报