JavaScript Enlightenment (이 링크는 사전 게시 된 버전 (85 페이지)에 있지만 발행 된 버전 (6.3 장)이 있으며 같은 것을 말합니다.) 어떤 내부 함수도 this
을 전역 개체 (window
)는 ECMA-3에서 사용되지만 ECMA-5에서는 수정됩니다.JavaScript에서는 독립 실행 형 내부 함수가 "this"를 원본 메서드가 호출 된 개체로 취급합니까?
http://jsfiddle.net/javascriptenlightenment/9GJhu/
var myObject = {
func1: function() {
console.log(this); // logs myObject
var func2 = function() {
console.log(this) // logs window, and will do so from this point on
var func3 = function() {
console.log(this); // logs window, as it’s the head object
}();
}();
}
}
myObject.func1();
는하지만 현재 크롬, 파이어 폭스 생각과 Node.js를 큰 정도 ECMA-5 구현해야한다, 그래서 위의 시도 :
이 코드는 다음과 같습니다 코드를 사용하여 여전히 func2
및 func3
내부의 전역 개체를 인쇄합니다. 그런 다음 "use strict";
을 func1
에 추가했으며, 경우에 따라 func2
과 func3
도 추가했습니다. 코드 : http://jsfiddle.net/9GJhu/6/ 이제 Chrome 및 node.js에서 이 myObject
대신 undefined
으로 인쇄됩니다. 따라서이 책에 따르면 this
은 ECMA-5에서 myObject
이되어야합니다. 위의 코드에서 잘못된 점은 무엇입니까?