我将此代码运行到控制台并尝试调用:
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();
工作得很好。为什么没有使用方法链接的第一个调用不起作用,就像我单独调用每个方法一样。
答案 0 :(得分:4)
你没有退货。您需要在每个函数的末尾添加return this
,以便将对象链接起来。