2013-04-17 56 views
0

以下代码来自显示分页表的简单页面。Javascript ajax回调和变量初始化

var exviewmodel = function() { 
    var self = this; 
    self.getList = function(pagenum) { 
     $.getJSON("/api/v1/getList", { page: pagenum }, function(data) { 
      self.paginator.count(data.count); 
     }); 
    }; 
    self.paginator = new Paginator(self.getList); 
}; 

我检查并验证了代码的工作原理以及计数在ajax成功的paginator中正确更新。

我觉得这很奇怪,因为paginator对象只有在定义了ajax回调后才被初始化。

JS解释器在看到像getList这样的函数定义时会做什么,它指向尚未在异步回调中初始化的属性?

回答

1

当JS解释器看到像getList这样的函数定义时,它究竟做了什么,它引用了还没有在异步回调中初始化的属性?

它就是这样。 “这是一个功能,OK”。

只有在函数被调用时才会尝试访问变量。

+0

好的。所以执行过程就像1. JS解释器创建一个对象来保存函数定义,而不必在函数中执行代码。 2. self.paginator被初始化3.在成功回调中,它检索现在初始化的paginator对象并更新它。我是否正确? – Ramnath