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

print(hh.test()); 

결과가 "f"인 경우, 내부 함수는 외부 함수의 속성입니까?은 외부 함수의 내부 함수입니다.

== 내 코드는 업데이트되었지만 결과는 여전히 "f"입니다. ! _!

+2

결과는 "f"일 수 없습니다. 내부 함수가 private 함수이기 때문에'hh.test'는'undefined'입니다. – pimvdb

+0

결과를 재현 할 수 없습니다 : http://jsfiddle.net/dHPQX/ 오류가 발생합니다 * hh.test는 함수가 아닙니다 *. 'hh'는'test' 속성을 가지고 있지 않습니다. –

+0

실제 오류는 hh.test가 함수가 아니지만, 이것이 hh에게 개인적인 원인이된다는 것입니다. – Nikoloff

답변

4

결과는 오류 여야하며 적어도 Chrome에서는 그렇습니다.

testhh은 로컬 기능이며 외부에서 액세스 할 수 없어야합니다. 하지 모든 기능의 멤버 - Function.test에 관해서는

, 그것은 Function의 속성입니다. 실제로 모든 기능의 일부로 만들려면 Function.prototype에 추가해야합니다.

+0

실제로 내가 사용한 엔진은 Mozilla® SpiderMonkey (JavaScript-C) 엔진이므로 "f"결과가 나오므로 엔진 관련 동작입니까? – Ryan

1

실제로이 코드에서 결과를 얻을 수 있었습니까? 결과를 인쇄하려고합니다.

hh.testtest이 개인적으로 hh에 정의되어 있으므로 정의되지 않습니다. 프로토 타입 Function.prototype.test에 대한 테스트를 정의하면이 경우 hh.test에서 'F'가 반환됩니다.

+0

예, 맞습니다.하지만이 코드가이 엔진에서 지원되는지 확실하지 않은 Mozilla® SpiderMonkey (JavaScript-C) 엔진을 사용하고 있습니다. – Ryan

관련 문제