2011-10-14 52 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

相关问题