0

所以这是我的 ajax 调用(几乎是标准的 jQuery,但使用的是 couchdb jquery 库,http ://daleharvey.github.com/jquery.couch.js/ ):

var stuff = "some stuff";
$.couch.db("test_db").create({
    success: enyo.bind(this, function (data) {
        console.log(stuff);
    })
});
stuff = "a change in stuff";

而且我希望 console.log 的输出是“一些东西”而不是“东西的变化”。

这样做的方法越多越好,因为我认为某些方法可能需要我不使用“enyo.bind”(http://enyojs.com/),但也许我可以用这些方法完成同样的事情。 .

4

3 回答 3

1

您可以为它使用一个函数。

var create = function (stuff) {
  $.couch.db("test_db").create({
    success: enyo.bind(this, function (data) {
      console.log(stuff);
    })
  });
};

create(stuff);

或者,它相当于一个匿名函数。

!function(stuff) {
  $.couch.db("test_db").create({
    success: enyo.bind(this, function (data) {
      console.log(stuff);
    })
  });
}(stuff);

请参阅函数前的感叹号有什么作用?

于 2013-01-13T16:50:43.337 回答
0

您可以通过执行以下操作“锚定”一个变量:

(function(varname) {
    // code that relies on varname
})(varname);
于 2013-01-13T16:44:12.547 回答
0
var stuff = "some stuff";
var callback = (function(stuff){ 
    return function(data){ console.log( stuff ) }; 
}(stuff));

$.couch.db("test_db").create({
    success: enyo.bind(this,  callback );
});
stuff = "a change in stuff";
于 2013-01-13T16:48:21.873 回答