Дело в том, что функция должна оцениваться с помощью «родительской» функции. Так, например,
foo().bar().test();
необходимо оценить:
foo().test();
, чтобы вы могли вызвать другую функцию на foo()
. Для этого вы можете return this
:
function foo() {
// empty, nothing interesting here
}
foo.prototype.bar = function() {
return this;
}
foo.prototype.test = function() {
return this;
}
Затем
var something = new foo();
something.bar() === something; // true
И из-за этого:
something.bar().test() === something.test(); // true
Так как something.bar()
оценивает значение something
, вы можете сразу вызвать вторую функцию за один раз.