자바 스크립트, 이러한 같이 (또는 다른 변수에 "함수에 대한 참조를"지정) : 위의Javascript에서 앨리어싱 된 함수가 "this"를 터치하지 않는 한 함수 별칭이 작동한다는 것은 사실입니까? 우리는 기능을 앨리어싱 경우
f = g;
f = obj.display;
obj.f = foo;
모든 3 선, 그들은만큼 작동합니다 오른쪽의 함수/메소드가 this
을 터치하지 않습니까? 모든 인수를 전달하기 때문에 오른쪽에있는 함수/메소드가 this
을 사용하는 경우에만 엉망이 될 수 있습니다.
실제로 g
의 속성이 window
인 경우 1 번 줄은 아마도 괜찮습니다. g
이 obj.display
을 참조하면 동일한 문제가 발생합니다.
obj.display
터치
this
, 그것은이
obj
을 의미하는 것입니다 라인 2에서
,하지만 f
가 호출 될 때 this
는 window
, 그래서 그들은 다르다. 3 행에서
, 그것은 동일합니다 foo
그것이 window
의 속성이 있다면 window
을 참조 this
를 사용하고있는 동안 f
가 obj
의 코드 내에서 호출 될 때, 다음 this
는 obj
입니다. (전역 함수).
f = function() { obj.display.apply(obj, arguments) }
라인 3과 같이 쓸 수있다
:
obj.f = function() { foo.apply(window, arguments) }
이 올바른 방법인가? 그리고 이것 외에 다른 방법이 있습니까?
이 날 M.C. 생각했다 그것은 다음과 같이 작동 해머 – hobodave
알아. 나는 원래 질문에서 언급하지 않으려 고 노력했다. –
축하합니다. 자바 스크립트에서 객체 지향 프로그래밍을 싫어하는 이유를 발견했습니다. 바운드 기능이 없기 때문에 항상 상황을 염두에두고 (따라서)이 점을 염두에 두어야합니다. 이제 실제 OOP 언어 (미안 :)로 이동할 수 있습니다. – wump