JavaScript에서는 DOT 연산자를 통해 객체의 속성을 읽고 쓸 수 있습니다. " 또는 브래킷 연산자 "[]":
코드 사본은 다음과 같습니다.
var o = {x : 1, y : 2};
Console.log (ox); // 1
console.log (o [ "y"]); // 2
OY = 7;
console.log (o [ "y"]); // 7
브래킷 연산자를 사용하는 경우 연산자의 값 유형은 문자열이어야하거나 문자열로 변환 할 수있는 표현식이어야한다는 점에 주목할 가치가 있습니다.
코드 사본은 다음과 같습니다.
console.log (o [y]); // referenceError : y는 정의되지 않았습니다
var v = "y";
Console.log (O [V]); // 7
Java 언어와 달리 JavaScript의 객체의 속성을 동적으로 추가하거나 삭제할 수 있습니다. 속성을 할당 할 때 속성이 존재하지 않으면 JavaScript는이 속성을 개체에 동적으로 추가합니다.
코드 사본은 다음과 같습니다.
OZ = 99;
console.log (o); // 객체 {x = 1, y = 7, z = 99}
프로토 타입 상속 체인의 속성 읽기
JavaScript의 모든 객체에는 프로토 타입 프로토 타입 객체가 있으며 프로토 타입 객체에서 속성을 상속합니다. 따라서 JS에서 객체의 특성은 두 가지 범주로 나뉩니다.
1. 개체 자체가 소유 한 재산 ( "소유 재산").
2. 프로토 타입 객체에서 상속 된 속성.
객체의 속성을 읽을 때 다음 규칙은 다음과 같습니다.
1. 개체 자체의 속성 수집에서 읽어야하는 속성을 검색하십시오 ( "소유 자산"). 검색 할 수 있다면 속성을 직접 읽고 그 가치를 반환합니다.
2. 객체의 자체 속성 수집 ( "자산")에서 속성을 검색 할 수없는 경우 속성이 검색되고 그 값이 반환 될 때까지 개체의 프로토 타입 프로토 타입 체인에서 계속 검색하십시오.
3. 객체 자체의 속성 수집 ( "자산")에서 속성을 검색 할 수없고 모든 객체의 프로토 타입 객체에서 속성을 검색 할 수없는 경우 정의되지 않은 상태가 반환됩니다.
프로토 타입 상속 체인에 속성을 작성하십시오
JavaScript 객체의 속성에 글을 쓸 때 다음 규칙은 다음과 같습니다.
1. 객체 자체에 속성이 있고 속성이 쓸 수있는 경우 새 값을 속성에 기록하십시오. 속성이 읽기 전용이면 오류 가보고됩니다.
2. 객체 자체에 속성이없고 모든 프로토 타입 객체에 존재하지 않으면이 속성을 객체에 추가하십시오.
3. 객체 자체에 속성이 없지만 속성이 프로토 타입 객체에 존재하고 쓸 수있는 경우, JS는 객체 에이 속성을 생성합니다. 즉, 객체는 프로토 타입 객체의 속성을 무시합니다. 프로토 타입 객체 의이 속성 값은 변경되지 않았습니다.
4. 객체 자체에 속성이 없지만 속성이 프로토 타입 객체에 존재하고 읽기 전용이면 오류 가보고됩니다.
5. 객체 자체에 속성이 없지만 속성의 세터 메소드가 프로토 타입 객체에 존재하는 경우 JS는 프로토 타입 객체에서 세터 메소드를 호출합니다. 세터 메소드를 실행할 때 가변 할당이 관련되면 할당 작업이 객체 자체에 작용하고 프로토 타입 객체가 변경되지 않습니다. 이 동작의 경우 : 객체는 프로토 타입에서 세터 함수를 상속하고 실행합니다.
위의 규칙에서 속성에 대한 할당 작업이 성공하면 객체 자체가 항상 결국 수정되고 프로토 타입 프로토 타입 객체가 변경되지 않음을 알 수 있습니다.