【问题标题】:How can i access the objects variable inside an objects function (javascript)?如何访问对象函数(javascript)中的对象变量?
【发布时间】:2013-07-29 11:03:38
【问题描述】:
(function () {
    var id="test";
    $.ajax({
       context: this,
       url : "http://weather.yahooapis.com/forecastrss",
       success : function(data){
            this.id = "was test";
       }
    });
    console.log(id);
})();

上一个问题不够清楚,所以请听听问题的真正含义。当我在做console.log(id) 时,它不会显示更改的值。我想得到的是id 的更改值。我怎样才能做到这一点,我已经尝试了 cmets 中的所有解决方案以及给定的答案,但没有一个对我有用?

非常感谢 jsFiddle。

【问题讨论】:

  • 你有语法错误,使用你的控制台
  • @roasted 我看不到,那在哪里?
  • @KamranAhmed 使用 }); 而不是 } 关闭成功回调
  • @roasted 这是一个打字错误。我正在尝试不同的东西

标签: javascript jquery object windows-8 javascript-objects


【解决方案1】:

getTodayCats中:

var self = this;

然后当需要访问ids时,你应该这样获取:

self.ids

self,this 模式的用法是在这种情况下进行的,因为您需要在异步回调处理程序中访问 this 的属性(ajax 成功)。异步回调的处理程序是在没有原始 this 对象的情况下调用的,因此 this 用于利用函数的闭包传入原始对象。

如果是 jQuery 的 ajax 方法,您还可以使用 context 选项传入 this 对象,该对象将用于它的回调处理程序。是否使用它取决于您。我个人不喜欢这样做,因为这不是其他异步处理程序的选项,例如在超时和间隔的情况下,我更喜欢保持一致。

【讨论】:

  • $.ajax 得到一个选项,context 选项
  • 感谢您提及这一点。
【解决方案2】:
 $.ajax({
     url: "http://localhost/woodenspoon/getTodaysCats.php",
     contentType: "application/json; charset=utf-8",
     dataType: "json",
     responseType: "json",
     context: this,
     success: function (data) {

         this.ids = "ok";

     }
 });

【讨论】:

  • 你对更新的代码有什么看法,我试过你的方法,但对我不起作用!!
【解决方案3】:

以这种方式访问​​“ids”-

getTodaysCats: function () {

    var args = Array.prototype.slice.call( WinJS.UI.Pages.define.arguments);
    var ids = args[1].ids;
    $.ajax({               
        ...
        , success: function (data) {
            var arr = new Array(1,2,3,4,5);
            foreach(var num in arr)
                ids += "ok";    
        }
    });

    return ids;
}

【讨论】:

    【解决方案4】:

    尝试使用类似的东西...

    ${variable}

    【讨论】:

      最近更新 更多