2012-02-10 31 views
1
function log(tobelogged){ 
    if (debugging){ 
     c.log(arguments); 
     c.log(arguments.toString()); 
     c.log(tobelogged); 
    }; 
}; 

然後嘗試登錄發送的參數在JavaScript

log(someObject); 

,我要回應

'someObject' 
'whatever is in someObject' 

我嘗試了上述的toString(),但顯然我失去了一些東西。你如何獲得發送給函數的「名稱」?該示例在瀏覽器中使用oni apollo分層sjs,但我認爲這不重要。 Anyy的想法?

回答

4

參數沒有名稱。它僅通過參數或通過arguments對象的索引進行引用。參數名稱是從參數到arguments對象中的索引的間接引用。

嚴格模式,甚至還有更低的相關性,因爲你可以修改參數值而不影響參數的值對象,反之亦然。

我想你會來的是使用最近...

console.dir(arguments); // instead of console.log 

...這應該給你一個可擴展的對象,所以你可以看到指數的參數。

enter image description here

+1

謝謝!這看起來很有希望,我會試一試,當能夠... – heorling 2012-02-10 01:40:09

+0

正如你所說,不做我想要的,但。 – heorling 2012-02-10 02:05:36

1

該信息丟失,並且在arguments中不可用。

您可以在那裏設置一箇中斷點(引入debugger;)並檢查調用堆棧。

+0

你是對的,有做我想做什麼沒有簡便方法。雖然我不是如何使用調試器命令,但請閱讀..謝謝。 – heorling 2012-02-10 02:05:58