2014-10-18 4 views
1

Я побежал этот код в консоли и пытались дозвониться:Понимание Javascript Chaining Patterns

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

Это был мой предыдущий код:

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

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

Ошибка, которая возвращается была «TypeError: Не удается прочитать свойство" bar 'of undefined ". Хотя, когда я писал:

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

Он работал нормально. Почему первый вызов, использующий цепочку методов, не работает, как если бы я отдельно вызывал каждый метод.

+2

вы хотите разучить эти методы ... – dandavis

ответ

4

Вы ничего не возвращаете. Вы должны добавить return this в конце каждой из ваших функций, чтобы объект мог цепочки.

+0

Спасибо, что это сработало. – mike

+0

Если это решило вашу проблему, не забудьте нажать галочку, чтобы другие знали, что она была решена. – Scimonster