320x100
320x100
문제의 소스코드
let user = {
name: "John",
hi() { alert(this.name); },
bye() { alert("Bye"); }
};
user.hi(); // John (간단한 호출은 의도한 대로 잘 동작합니다.)
// name에 따라 user.hi나 user.bye가 호출되게 해봅시다.
(user.name == "John" ? user.hi : user.bye)(); // TypeError: Cannot read property 'name' of undefined
// 정상 작동
user.hi();
// 오류 발생
(user.name == "John" ? user.hi : user.bye)();
: 메서드를 호출 할 때 this에 undefined가 할당되어 에러 발생
참조타입
: 점 . 은 객체 프로퍼티 obj.method에 접근
: 괄호 ()는 접근한 프로퍼티(메서드)를 실행
let user = {
name: "John",
hi() { alert(this.name); }
}
// 메서드 접근과 호출을 별도의 줄에서 실행함
let hi = user.hi;
hi(); // this가 undefined이기 때문에 에러가 발생합니다.
: 위와 같이 두 연산을 별도의 줄에 둘 경우 this 정보를 잃게 되면서 오류 발생
※ 참조타입에 속하는 값
- base : 객체
- name : 프로퍼티의 이름
- strict : 엄격모드에서 true
Refference
300x250
728x90
'Programming > JavaScript' 카테고리의 다른 글
모던 자바스크립트 17. Proxy와 Reflect (0) | 2022.04.23 |
---|---|
모던 자바스크립트 16. BigInt (0) | 2022.04.23 |
모던 자바스크립트 14. 커링 (0) | 2022.04.23 |
모던 자바스크립트 13. Eval (문자열 코드 실행하기) (0) | 2022.04.23 |
모던 자바스크립트 (모듈) 12-3. 동적으로 모듈 가져오기 (0) | 2022.04.23 |