uni之this作用域问题

目录介绍

  • 01.先看一个案例
  • 02.看一下解决方案

01.先看一个案例

  • 代码如下所示
    • 发现了点击按钮1可以更新title内容,但是点击按钮2却无法更新title内容。这个究竟是为什么呢?
    
    
    
    
    
    
  • 为什么changeTitle2无法改变title内容
    • 在changeTitle2方法的success方法中,该success方法指向闭包,所以this属于闭包,由此在success回调函数里是不能直接使用this.title的。

02.看一下解决方案

  • 可以发现这样操作就可以解决作用域问题
  • 第一种解决方案
    • 解决办法就是在闭包之外先把this赋值给另一个变量
    //可以发现这样操作就可以解决作用域问题
    changeTitle3(){
    	//赋值
    	var me = this;
    	uni.setStorage({
    	    key: 'storage_key',
    	    data: 'hello',
    	    success: function () {
    			me.title = "改变标题3";
    	        console.log('changeTitle2------success');
    	    }
    	});
    },
    
  • 第二种解决方案
    • 使用箭头函数也可以解决该问题,思考一下这是为什么?
    changeTitle4(){
    	uni.setStorage({
    	    key: 'storage_key',
    	    data: 'hello',
    	    success:() => {
    			this.title = "改变标题4";
    	        console.log('changeTitle2------success');
    	    }
    	});
    },
    

你可能感兴趣的:(uni)