在发布 - Meteor调用的函数内访问发布函数

时间:2014-02-24 13:28:16

标签: meteor

我有一个调用其中的另一个方法的发布方法,如下所示:

Meteor.publish("myList", function() {
  myFunction();
});

function myFunction() {
  // i want to access the publish methods *this* here
}

我有一个用例,我应该在myFunction方法中访问Meteor.publish this而不传递任何参数。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

听起来您正在寻找以下标准JavaScript功能之一:

由于您没有将任何参数传递给函数,因此它们都可以正常工作,但call()可能是最佳选择。

这些允许您调用函数,同时将函数内的this值设置为您想要的任何值。所以对于你的情况,它可能看起来像这样:

Meteor.publish("myList", function() {
  // sends the current function's `this` value to the other function, so the
  // other function can access it as its own `this`
  myFunction.call(this);
});

function myFunction() {
  // the value of `this` will be whatever you passed to the `call()` method
  console.log(this);
}

请注意,默认情况下,当您自己调用函数(没有点运算符call()apply()或使用其他特殊方法bind())时,函数{ {1}}值将是全局对象(服务器上名为this的特殊对象,或浏览器上的特殊global对象)。如果您使用的是ES5严格模式(您可能知道自己是),默认情况下window的值为this