Function.prototype.test = function(){return "F"}
function hh(){var x="xx";function test(){return "f"}}
print(hh.test());
结果是“f”,这是否意味着内部函数是外部函数的一个属性?是外部函数的一个属性的内部函数?
==更新了我的代码,但结果仍然是“f”。 !_!
Function.prototype.test = function(){return "F"}
function hh(){var x="xx";function test(){return "f"}}
print(hh.test());
结果是“f”,这是否意味着内部函数是外部函数的一个属性?是外部函数的一个属性的内部函数?
==更新了我的代码,但结果仍然是“f”。 !_!
结果应该是错误 - 至少在Chrome中是这样。
test
里面hh
是一个本地函数,它不应该从外部访问。
至于Function.test
,这是财产Function
- 不是所有职能的成员。如果你真的想要成为所有功能的成员,它需要被添加到Function.prototype
实际上我使用的引擎是Mozilla®SpiderMonkey(JavaScript-C)引擎,它产生了“f”结果,那么,它是引擎特定的行为吗? – Ryan
你真的设法从这段代码得到一个结果?您正在尝试打印结果。
hh.test
将被定义为test
私人定义为hh。在这种情况下,在原型Function.prototype.test
上定义测试将从hh.test
返回'F'。
是的,你是对的,但是代码给了我什么,我正在使用Mozilla®SpiderMonkey(JavaScript-C)引擎,不知道这个引擎是否支持这种语法? – Ryan
结果不能是'f'。 'hh.test'是'undefined',因为内部函数是一个私有函数。 – pimvdb
我无法重现您的结果:http://jsfiddle.net/dHPQX/它引发错误* hh.test不是函数*。 'hh'没有'test'属性。 –
实际的错误是,hh.test不是一个函数,但是这是因为它是私人的......。 – Nikoloff