Javascript获取调用者的范围/上下文而不传递它

时间:2016-01-30 23:50:55

标签: javascript meteor coffeescript

我正在使用meteorjs,所谓的publicationsmeteor methods。在这些内容中,您可以访问变量this.connection,该变量包含有关您与特定用户的所有http标头和连接的信息,例如他们可以访问您网站的主机名。

由于我想让我的应用程序多域像slack一样,我现在需要挂钩数据库方法以将返回的数据集限制为正确的主机名。

问题:此数据仅在poblication或meteor方法中可用。

有没有办法在不改变我所有模型函数的签名的情况下获取调用方法的this

示例:

mySpecialMethodWhereThisIsRight = function(param1) {
  console.log(this.connection.httpHeaders.host) //Prints out the servername
  modelname.mySelfMadeFunction(someData);
}

modelname = {
  mySelfMadeFunction: function (data) {
    console.log(this.connection.httpHeaders.host) //prints nothing

    # some voodo
    console.log(this.connection.httpHeaders.host) //Prints out the hostname
  }
}

我现在正在寻找那个“voodo”,否则我将不得不重写很多功能和他们被称为的地方。 (并不是那么简单,因为没有可靠的coffeescript重构工具)

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解,但如果您能够对调用方法进行更改,这对您有用吗?



mySpecialMethodWhereThisIsRight = function(param1) {
  console.log(this.connection.httpHeaders.host) //Prints out the servername
  modelname.mySelfMadeFunction.bind(this)(someData);
}