在javascript中传递包括其上下文的函数

Sil*_*ust 3 javascript

在javascript中有一些我不理解的东西,并将一个示例问题分解为一个基本案例:

    a = function () {
      this.b = 5;
    }

    a.prototype.c = function () {
      alert(this.b);
    }

    var d = new a();
    var e = d.c; // how do I save a ref to the method including the context (object)??

    d.c(); // 5 -> ok
    e();   // undefined -> wtf??
Run Code Online (Sandbox Code Playgroud)

那么为什么在上一个例子中没有上下文的情况下调用函数呢?我如何用上下文调用它?

提前致谢 :-)

Ble*_*der 5

d.c就像一个未绑定的实例方法.您可以使用Function.prototype.bind创建一个绑定的新函数d(第一个参数.bindthis参数):

var e = d.c.bind(d);
Run Code Online (Sandbox Code Playgroud)

或致电ed作为this参数:

e.call(d);
Run Code Online (Sandbox Code Playgroud)