2011-10-14 51 views
0
Function.prototype.test = function(){return "F"} 
function hh(){var x="xx";function test(){return "f"}} 

print(hh.test()); 

結果是「f」,這是否意味着內部函數是外部函數的一個屬性?是外部函數的一個屬性的內部函數?

==更新了我的代碼,但結果仍然是「f」。 !_!

+2

結果不能是'f'。 'hh.test'是'undefined',因爲內部函數是一個私有函數。 – pimvdb

+0

我無法重現您的結果:http://jsfiddle.net/dHPQX/它引發錯誤* hh.test不是函數*。 'hh'沒有'test'屬性。 –

+0

實際的錯誤是,hh.test不是一個函數,但是這是因爲它是私人的......。 – Nikoloff

回答

4

結果應該是錯誤 - 至少在Chrome中是這樣。

test裏面hh是一個本地函數,它不應該從外部訪問。

至於Function.test,這是財產Function - 不是所有職能的成員。如果你真的想要成爲所有功能的成員,它需要被添加到Function.prototype

+0

實際上我使用的引擎是Mozilla®SpiderMonkey(JavaScript-C)引擎,它產生了「f」結果,那麼,它是引擎特定的行爲嗎? – Ryan

1

你真的設法從這段代碼得到一個結果?您正在嘗試打印結果。

hh.test將被定義爲test私人定義爲hh。在這種情況下,在原型Function.prototype.test上定義測試將從hh.test返回'F'。

+0

是的,你是對的,但是代碼給了我什麼,我正在使用Mozilla®SpiderMonkey(JavaScript-C)引擎,不知道這個引擎是否支持這種語法? – Ryan

相關問題