理解Javascript链接模式

时间:2014-10-18 19:27:42

标签: javascript method-chaining

我将此代码运行到控制台并尝试调用:

obj.foo().bar().coo().moo();

这是我之前的代码:

    function bar() {
  this.coo = function () {
    this.moo = function () {
      console.log("yay");
    }
  }
}

obj = {
  foo : function () {this.bar = bar}
};      

返回的错误是" TypeError:无法读取属性' bar'未定义"。虽然,当我写道:

obj.foo();
obj.bar();
obj.coo();
obj.moo();

工作得很好。为什么没有使用方法链接的第一个调用不起作用,就像我单独调用每个方法一样。

1 个答案:

答案 0 :(得分:4)

你没有退货。您需要在每个函数的末尾添加return this,以便将对象链接起来。