2015-06-23 25 views
2

例如(從https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set),我初始化這樣一個對象:在Javascript中,如何顯示setter/getter的函數體?

var o = { 
    set current (str) { 
    this.log[this.log.length] = str; 
    }, 
    log: [] 
} 

我怎麼能打印的o.current函數體在控制檯?如果o.current是一個普通的方法,它可以通過o.current.toString()完成。但是,我不知道如何打印「getter」或「setter」方法的函數體。

有沒有人有關於此的想法?

+0

你可以簡單地使用'o.toSource()',然後從返回的字符串中提取setter代碼?一定有更好的方法來做到這一點,雖然... –

+0

@ k-nut'o.toSource()'不能在我的Chrome ... –

回答

3

您可以使用__lookupSetter__。所以簡單地打電話o.__lookupSetter__('current').toString() 應該給你你想要的輸出。 Source

更新

這已經是不過不建議。您應該使用標準Object.getOwnPropertyDescriptor來代替。所以調用Object.getOwnPropertyDescriptor(o, 'current').set.toString()將適用於您的用例。 Source

相關問題