JS中的this问题

最近在使用react native开发安卓app的过程中,总是遇到this指针所在上下文切换,导致从this中调用对象或者方法时,总是报xxx is undefine, 这是因为JS中的this十分灵活,随着代码执行上下文的不同,this指针所指的当前对象也在不断变化。尤其是下面一种典型情况:

在实现Component 的render 方法时,例如我们需要为一个button绑定一个onPress或onClick的事件响应函数:

class MyComponent extends React.Component{
    
    button_clicked(){
        console.log("button clicked");
    }

    render(){
        
            
        
    }
}

此时button_click函数所处的上下文是DOM, 而不是MyComponent这个对象,所以DOM中是没有我们定义的button_click这个方法的,所以会报undefined。有两种解决方案。

1. 在构造函数中使用bind()函数,对方法进行绑定

2. 在指定事件响应函数时,使用arrow function。

你可能感兴趣的:(JS中的this问题)