0

我对这个网络东西很陌生,我有一些看起来像这样的服务器调用

$.when.apply($, serverRequests).then(function () {
    // update the UI on the page
    // remove overlay
});

所以我更新页面部分的 UI 是有效的。但是我想要做的是在服务器请求发生时添加一个覆盖。所以我尝试使用 unshift 向我的 serverRequests 数组添加一个方法,希望这会添加覆盖,所以我稍后可以在 //remove 覆盖部分中删除它。

        var addOverlay = function () {
            console.log("--------------");
            console.log(this);
            console.log(_this);
        };
        serverRequests.unshift(addOverlay);

在我尝试使用 _this.$el.find("#mypage") 添加覆盖时,我遇到了问题。所以我尝试将内容记录到屏幕上。在上面的 addOverlay() 函数中,我没有在屏幕上打印任何内容。但如果我这样做:

var addOverlay = console.log("hello world");
serverRequests.unshift(addOverlay);

这确实有效。这里有什么区别?提前致谢!

4

1 回答 1

0
   var addOverlay = function () {
       console.log("--------------");
       console.log(this);
       console.log(_this);
   };

几乎等于

   function addOverlay () {
         console.log("--------------");
         console.log(this);
         console.log(_this);
  }

所以,而不是,

     serverRequests.unshift(addOverlay);

你需要调用函数,

    serverRequests.unshift(addOverlay());

也在这里,

var addOverlay = console.log("hello world");
serverRequests.unshift(addOverlay);

它登录到控制台,因为您还没有创建任何函数,并直接调用console.log,所以它可以工作。在这里,您正在登录,然后将of保存hello world到addOverlay 中。consolereturnconsole.log

于 2013-03-25T03:27:30.043 回答