如何访问对象函数(javascript)中的对象变量?

时间:2013-07-29 11:03:38

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

(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的更改值。我怎样才能做到这一点,我已经在评论和给定答案中尝试了所有解决方案,但没有一个对我有用?

jsFiddle将受到高度赞赏。

4 个答案:

答案 0 :(得分:1)

getTodayCats

var self = this;

然后当需要访问 ID 时,你应该这样:

self.ids

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

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

答案 1 :(得分:0)

 $.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";

     }
 });

答案 2 :(得分:0)

以这种方式访问​​“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;
}

答案 3 :(得分:-1)

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

${variable}