2014-02-20 73 views
0

試圖讓我的頭繞過javascript OOP,爲什麼這導致測試方法打印整個函數定義,就好像它是一個字符串?Javascript OOP函數打印爲字符串

var Myclass = function Myclass(){ 
    this.connection = make_ajax(); 
    this.hasConnection = function(){return this.connection}; 

    this.test = function(){ 
     console.log(this.hasConnection); 
    } 
} 
var x = new Myclass(); 
x.test(); 

結果:

log: function(){return this.connection}

+1

與我一起工作。 –

+0

道歉我做了一個改變 – Kiee

+1

因爲你不叫它 –

回答

3

因爲......你不調用該函數。您正在記錄函數本身,並且由於日誌記錄需要一個字符串,因此它會調用內置的toString方法,該方法將函數作爲字符串返回。

嘗試console.log(this.hasConnection());

+0

感謝您的洞察力,說我想讓hasConnection保持一個屬性而無需調用它,還有另一種方法將函數的結果存儲在變量中嗎? – Kiee

+0

這不就是'this.connection'嗎? –

+0

我想這可能是我只是想要一個官方布爾,我喜歡讓我的事情變得更加複雜:P,我現在應該刪除無意義的添加,但是要感謝清理函數調用的事情:) – Kiee

0

當你

consloe.log(this.hasConnection); 

要登錄的實際功能,調用函數的不結果。嘗試將此行更改爲

consloe.log(this.hasConnection());