我有一个调用其中的另一个方法的发布方法,如下所示:
Meteor.publish("myList", function() {
myFunction();
});
function myFunction() {
// i want to access the publish methods *this* here
}
我有一个用例,我应该在myFunction方法中访问Meteor.publish this
而不传递任何参数。
有没有办法做到这一点?
答案 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
。