230726(수)
문제 : this. 를 안 붙이면 reference Error가 뜨는데
위에 선언을 했음에도 불구하고 왜 에러가 뜨는지 원인 찾아보기
예시 코드
var person = {
name: “홍길동“, // 이름 프로퍼티를 정의함.
birthday: “030219”, // 생년월일 프로퍼티를 정의함.
age: 30,
pId: “1234567", // 개인 id 프로퍼티를 정의함.
fullId: function() { // 생년월일과 개인 id를 합쳐서 주민등록번호를 반환함.
return this.birthday + this.pId;
},
};
Js에서 this. 를 안 붙이면 reference Error가 뜨는 이유 : this가 객체를 참조하지 않기 때문.
예를 들어, 위의 코드에서 fullId 함수에서 this.birthday와 this.pId를 사용하고 있음.
하지만 fullId 함수가 호출될 때 this는 person 객체를 참조하지 않고 전역 객체를 참조함.
따라서 전역 객체에 birthday와 pId 프로퍼티가 없기 때문에 reference Error가 발생한다.
여기서 더 나아가
this를 사용하지 않고 객체의 프로퍼티에 접근하는 방법은?
자바스크립트에서 객체의 프로퍼티에 접근하는 방법은 두 가지가 있다.
1. 객체명.프로퍼티명을 이용하는 것
2. 객체명[‘프로퍼티명’]을 이용하는 것
예를 들어, 다음과 같은 객체가 있다면 :
var user = {
name: 'Jane',
age: 20,
city: 'Seoul'
};
객체의 프로퍼티에 접근하는 방법은 다음과 같다 :
person.name; // Jane
person['name']; // Jane
이렇게 두 가지 방법 모두 사용할 수 있다.