react类中方法的this问题

104 阅读1分钟
  • 类中的方法会自动开启严格模式
  • 方法严格模式中的this指向为undefined
  • 除非用该类的实例调用该方法,this指向为调用该方法的实例
 class Weather extends React.Component {
            constructor(props){
                // 這裡頭的this指向实例对象
                super(props);
                this.age = age; 
                // 这个操作是将类的原型上的change方法的this指向进行更改
                // 更改为指向实例对象p1;因为change方法原本的this是undefined(类中的方法会自动开启严格模式)
                // 用bind更改后,this指向为实例p1,这时候在赋值给this.chenge,
                // 也就是给实例对象p1添加了一个方法
                // 最后添加到this上,所以,实例上多了一个方法为change,且指向为该实例
                // 所以解决了chenge的this指向为undefined的问题;
                this.change = this.change.bind(this);
            }
            rander(){
                // 這裡頭的this指向实例对象
                console.log('rander');
            }
            change() {
                // 這裡頭的this指向undefined
                console.log(this);
            }
         
        }
        let p1 = new P('111');
        p1.change();