this

Posted Lulin1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this相关的知识,希望对你有一定的参考价值。

在函数内部定义的函数,其this也会指向全局,而和我们希望的恰恰相反。代码如下:

var point = {   
 x : 0,   
 y : 0,   
 moveTo : function(x, y) {   
     // 内部函数  
     var moveX = function(x) {   
     this.x = x;//this 绑定到了全局  
    };   
    // 内部函数  
    var moveY = function(y) {   
    this.y = y;//this 绑定到了全局  
    };   
  
    moveX(x);   
    moveY(y);   
    }   
 };   
 point.moveTo(1, 1);   
 point.x; //==>0   
 point.y; //==>0   
 x; //==>1   
 y; //==>1  

 

我们会发现不但我们希望的移动呢效果没有完成,反而会多出两个全局变量。那么如何解决呢?只要要进入函数中的函数时将this保存到一个变量中,再运用该变量即可。代码如下:

var point = {   
 x : 0,   
 y : 0,   
 moveTo : function(x, y) {   
      var that = this;   
     // 内部函数  
     var moveX = function(x) {   
     that.x = x;   
     };   
     // 内部函数  
     var moveY = function(y) {   
     that.y = y;   
     }   
     moveX(x);   
     moveY(y);   
     }   
 };   
 point.moveTo(1, 1);   
 point.x; //==>1   
 point.y; //==>1  

 

以上是关于this的主要内容,如果未能解决你的问题,请参考以下文章

vue2.0 代码功能片段

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]

ngx-translate实现国际化:this.translate.use()this.translate.get()this.translate.instant()onLangChange(代码片段

Discuz代码片段

在片段java类中使用“this”和getLastSignedInAccount时出现错误[重复]

实用代码片段将json数据绑定到html元素 (转)