2014-01-12 28 views
2
// Q returns new Library object 
    var Q = function (params) { 
     return new Library(params); 
    }; 

    // In our Library we get our selector with querySelectorAll (we do not support < ie8) 
    // We also add selector length, version and twitter/github or whatever you like as information about your library. 
    var Library = function (params) { 
     // Get params 
     var selector = document.querySelectorAll(params), 
      i = 0; 
     // Get selector length 
     this.length = selector.length; 
     this.version = '0.1.0'; 
     this.twitter = 'http://www.twitter.com/mmmmm_'; 

     // Add selector to object for method chaining 
     for (; i < this.length; i++) { 
      this[i] = selector[i]; 
     } 

     // Return as object 
     return this;   
    }; 

爲什麼我們在構造函數的末尾有return this;?如果我們忽略它會發生什麼?在構造函數定義中「return this」:它的作用是什麼?

這不是第一次,我覺得在構造函數中該指令,但有時它的出現,有時(在其他類其他腳本),它不會出現,我不明白其中的道理。

+0

從函數返回當前對象。 –

回答

0

它的存在,所以你可以在同一個對象上鍊的多個功能。 jQuery到處都有。

1

它返回當前對象實例,它允許做方法-鏈接(例如object.method1().method2().method3();

+0

這不回答這個問題。具體是關於構造函數。 –

4

假設構造函數被調用與new Ctor()語法,沒有差別,如果你寫return this與否。如果構造函數到達最後而沒有返回任何內容,它將隱含返回this

如果調用構造函數作爲常規功能,而無需使用new那麼它會表現爲通常的:如果沒有得到一個return語句返回undefined到達終點和return this聲明將取決於什麼的價值功能傳入的this(這取決於你如何調用函數)。

相關問題