Javascript 角尖';这';收回

Javascript 角尖';这';收回,javascript,angularjs,callback,Javascript,Angularjs,Callback,我在angular应用程序的服务中存储了一个对象,我无法从回调方法中访问“this”。像这样的 app.service("myService", ['$http', '$q', function($http, $q) { return ({foo: foo}); this.myObj = {}; function doSomething(param, callback){ p

我在angular应用程序的服务中存储了一个对象,我无法从回调方法中访问“this”。像这样的

    app.service("myService", ['$http', '$q', 
        function($http, $q) {
            return ({foo: foo});

            this.myObj = {};

          function doSomething(param, callback){
            param++;
            callback(param);
          } 

          function foo(param){
          doSomething(param, function(responce){ 
            this.myObj.myParam = responce;//'this' is undefined
          });
          }
     });
如何正确访问它?
谢谢……

如果
obj
是您希望成为此对象的对象,您可以使用
bind
将其设置为函数
f
的实际
this
,例如:
f.bind(obj)

自以下日期起:

bind()方法创建一个新函数,该函数在调用时将其this关键字设置为提供的值[…]


“this”仅保留在函数的当前范围内。在新函数中调用时,“this”会发生变化。大多数人所做的是var,它=这个

 app.service("myService", ['$http', '$q', 
    function($http, $q) {
        var that = this;

        return ({foo: foo});

        this.myObj = {};

      function doSomething(param, callback){
        param++;
        callback(param);
      } 

      function foo(param){
        doSomething(param, function(responce){ 
          that.myObj.myParam = responce;//'that' defined
        });
      }
 });
您应该将第一个“this”对象存储到某个变量中。 您应该在回调函数中使用它

app.service("myService", ['$http', '$q', 
    function($http, $q) {
        return ({foo: foo});
        var self = this;
        self.myObj = {};

      function doSomething(param, callback){
        param++;
        callback(param);
      } 

      function foo(param){
      doSomething(param, function(responce){ 
        self.myObj.myParam = responce;
      });
      }
 });

我希望它能对您有所帮助。

在您提出新问题之前,请使用搜索功能。下次您会尝试更好的。。。是的,比你强!