ECMA-262는 객체를 다음과 같이 정의합니다.
객체를 이해하는 가장 쉬운 방법은 객체의 인스턴스를 작성한 다음 속성과 메소드를 추가하는 것입니다.
코드 사본은 다음과 같습니다.
var person = new Object ();
person.name = "xulei";
person.age = "23";
person.job = "프론트 엔드 엔지니어";
person.sayname = function () {
경고 (this.name);
}
당신은 이것을 쓸 수도 있습니다
코드 사본은 다음과 같습니다.
var person = {
이름 : "Xulei",
나이 : 23,
직업 : "프론트 엔드 프로젝트",
SayName : function () {
경고 (this.name)
}
}
1. 속성 유형 : 데이터 속성 및 속성에 액세스합니다
1. 그들의 행동을 설명하는 4 가지 특성을 가진 데이터 속성
[configurable] : 속성을 삭제하여 속성을 재정의하여 속성의 특성을 수정할 수 있는지 또는 속성을 액세서 속성으로 수정할 수 있는지 여부를 나타냅니다. 기본값은 참입니다.
[열거 가능] : 속성을 for-in을 통해 반환 할 수 있는지를 나타냅니다. 기본값은 true입니다.
[쓰기 가능] : 속성을 수정할 수 있는지, 기본값은 참입니다.
[Value] :이 속성의 데이터 값을 포함합니다. 기본값은 정의되지 않았습니다
코드 사본은 다음과 같습니다.
var person = {
이름 : "Xulei"
}
사람 객체가 여기에 생성되고 값 값은 "Xulei"입니다.
속성의 기본 속성을 수정하려면 Ecmascript5의 Object.DefineProperty (속성이있는 개체, 속성 이름, 디스크립터 개체)를 사용해야 함)
디스크립터 개체는 구성 가능하고 열거 가능하며 쓰기 가능하며 값이어야합니다
코드 사본은 다음과 같습니다.
var peron = {}
Object.DefineProperty (Peron, "Name", {
쓰기 가능 : 거짓, // 속성을 수정할 수 없습니다
가치 : "Xu Lei-Xulei"
});
경고 (peron.name); // xulei-xulei
peron.name = "Xu Lei";
경고 (peron.name); // xulei-xulei
위의 작업은 비 스트릭 모드에서 무시되며 예외는 엄격한 모드에서 발생합니다.
속성이 구성 불가능한 것으로 정의되면 다시 구성 가능하게 다시 전환 할 수 없습니다.
대부분의 경우 Object.DefineProperty () 메소드에서 제공하는 이러한 고급 기능을 활용할 필요가 없습니다. 그러나 JavaScript를 이해하는 데 매우 유용합니다.
독자는 IE8 에서이 방법을 사용하지 않는 것이 좋습니다.
2. 속성에 액세스하면 4 가지 특성이 있습니다
[configurable] : 속성을 삭제하여 속성을 재정의하여 속성의 특성을 수정할 수 있는지 또는 속성을 액세서 속성으로 수정할 수 있는지 여부를 나타냅니다. 기본값은 참입니다.
[열거 가능] : 속성을 for-in을 통해 반환 할 수 있는지를 나타냅니다. 기본값은 true입니다.
[get] : 읽기시 호출 된 기능
[SET] : 속성을 작성할 때 호출 된 기능