객체의 프로퍼티의 이름을 알 수 없는 경우 [] 연산자를 사용
자바스크립트 객체는 고유 프로퍼티들을 가지고 있고, 동시에 해당 객체의 프로토타입 객체로부터 여러 프로퍼티를 상속받는다
객체에서 프로퍼티를 찾을 때 해당 객체에 프로퍼티가 존재하지 않으면
프로토타입 객체에서, 프로토타입 객체에 없으면 프로토타입 객체가 상속받은 프로토타입, 계속 상위 프로토타입으로 올라가면서 찾는다
이 작업은 프로퍼티를 찾거나 prototype이 null이 될 때 까지
반복된다
객체의 프로토타입 속성은 프로퍼티가 계승되는 체인 또는 연결리스트를 생성한다
객체의 프로퍼티에 값을 설정할 때는 해당 프로퍼티에 값을 설정할 수 있는지 프로토타입 체인을 검사한다 상속받은 프로퍼티가 읽기 전용이라면 값을 설정할 수 없다
값 설정이 허용된 경우 값 설정이 이뤄지거나 프로퍼티가 생성된다
하지만 프로토타입 체인은 변하지 않는다
계승된 프로퍼티를 선택적으로 재정의 할 수 있는 것이다
객체 o가 프로퍼티 x를 상속받은 경우, 해당 x가 setter 메소드를 가진 접근자 프로퍼티라면
객체 o에 새 프로퍼티 x가 만들어지는 것이 아니라
상속받은 프로퍼티 x가 가진 setter 메소드가 호출된다
이 때 프로퍼티 x가 정의된 프로토타입 객체에서 호출되는 것이 아니라
객체 o에 호출된다
setter메소드가 새로운 프로퍼티를 정의하게 된다면 객체 o에 추가되고 프로토타입 체인은 변경되지 않는다