关于这在javascript中

时间:2017-06-24 14:40:03

标签: javascript

我对这种行为在某些情况下的表现感到困惑,例如我有这个代码

var makeRequest=function(url,callback){

  var data=10; 

  callback(data);
};

var obj = {
  someValue: 20,
  loadData: function(data){
    var sum = this.someValue + data;
    alert(sum);
  },
  prepareRequest:function(){
    var url="http://someurl.com";

    makeRequest(url,obj.loadData);

  }
};

它会发出请求,并获取一些数据。问题是,当我使用makeRequest作为参数调用函数obj.loadData时,它会给出错误。 有人可以解释为什么会这样吗?为什么即使obj.prepareRequest()方法被loadData对象攻击,我调用obj时也不会表现出预期的行为? 我将不胜感激任何帮助。 “这个”关键字实在令人困惑。

1 个答案:

答案 0 :(得分:0)

当您将loadData函数作为参数传递到makeRequest时,只需考虑切换所有权...... makeRequest 现在拥有 {{1 }} 因此,如果loadData中使用了this个关键字,那么它指的是loadData而不是makeRequest

维护所有权或上下文的方法是使用obj

.bind()不清楚loadData是什么,因为背景已更改

this.someValue函数中添加prepareRequest,优良做法是将bind用于oop目的

示例

this

希望这有帮助