2017-03-02 180 views
-5

我想覆蓋length功能:覆蓋Object.length功能

function x_funct(){ 
    this.length = function(){ 
     console.log("hello"); 
     return 8; 
    } 
}; 

var x = new x_funct(); 
console.log(x.length); 

當節點執行它打印[Function]。我期待看到hello

+5

什麼爲什麼不允許?你運行它意味着它*被允許。你在問爲什麼你沒有打電話的功能沒有被調用? –

+3

'x.length'確實是一個函數。你是否打算調用這個函數? 'x.length()' – JJJ

+1

請編輯問題並解釋你的意思。你期望看到函數的源代碼嗎?你期望執行該功能嗎?還有別的嗎? –

回答

1

您聲明.length是一個函數,而不是一個值屬性。您可以使用只讀屬性Object.defineProperty

Object.defineProperty(this, 'length', { get: function() { return val; } }); 
0

因爲這就是你所顯示的功能。

函數是Javascript中的對象,所以如果您嘗試打印x.length,則會打印函數本身,而不是打印該函數的結果。

如果你想打印結果,你應該寫x.length()