>  기사  >  웹 프론트엔드  >  Javascript 객체의 데이터 속성 및 접근자 속성 인스턴스에 대한 자세한 설명

Javascript 객체의 데이터 속성 및 접근자 속성 인스턴스에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-05-30 11:40:091717검색

ES5의 객체 속성은 '데이터 속성'과 '접속자 속성'의 두 가지 유형으로 나눌 수 있습니다.

데이터 속성은 일반적으로 데이터 값을 저장하는 데 사용됩니다. 접근자 속성은 설정/가져오기 작업에 해당하며 데이터 값을 직접 저장할 수 없습니다.

데이터 속성 특성: 값, 쓰기 가능, 열거 가능, 구성 가능.

설명: 구성 가능: true/false, 삭제를 통해 속성을 삭제할 수 있는지 여부, 속성의 특성을 수정할 수 있는지 여부, 속성을 접근자 속성으로 수정할 수 있는지 여부, 기본값은 false입니다. : true/false, 전달 가능 여부 for in 루프 반환, 기본값은 false입니다.

writable: true/false, 속성 값을 수정할 수 있는지 여부, 기본값은 false입니다. 속성 값은 설정되어 있으며 기본값은 정의되지 않습니다.

접속자 속성 특성:

set, get, enumerable, configurable. 설명: 구성 가능: true/false, 삭제를 통해 속성을 삭제할 수 있는지 여부, 속성의 특성을 수정할 수 있는지 여부, 속성을 접근자 속성으로 수정할 수 있는지 여부, 기본값은 false입니다. : true/false, 전달 가능 여부 for in 루프 반환, 기본값은 false입니다.

set: 함수, 속성 값을 읽을 때 호출되는 함수 get: 함수, 속성 값을 수정할 때 호출되는 함수; .

객체에 속성을 추가하거나 기존 속성의 속성을 수정하려면 Object.defineProperty() 또는 Object.defineproperties() 메서드를 사용하세요.

Object.defineProperty(object, propertyname, descriptor):

매개변수 설명: 객체: 또는 속성 개체를 수정해야 합니다.

propertyname: 속성 이름, 문자열 형식

descriptor: 속성 설명, 데이터 속성 또는 접근자 속성의 특성을 설정합니다.

인스턴스 분석:

데이터 속성:

var emp = {
 
name:'tom'
 
};
   
 
Object.defineProperty(emp,'name',{
 
writable:false
 
});
 
emp.name = 'jery';
console.log(emp.name);//输出tom,因为已经设置了writable为false
 
 
Object.defineProperty(emp,'age',{
 
configurable:false,
 
writable:true,
 
value:22
 
});
 
console.log(emp.age);//输出22,因为设置了value为22
 
emp.age = 25;
 
console.log(emp.age);//输出25,设置了writable为true
 
delete emp.age;
 
console.log(emp.age);//输出25,设置了configurable为false,此属性删除不了

접속자 속성:

var emp ={
 
_name:'tom',
 
_age:20
 
};
 
  
Object.defineProperty(emp,'name',{
 
get:function(){
 
return this._name;
 
}
 
});
 
console.log(emp.name);//输出tom,由get方法返回_name的值
 
emp.name = 'jery';
 
console.log(emp.name);//输出tom,没有set方法,修改不了_name的值
 
   
Object.defineProperty(emp,'age',{
 
configurable:true,
 
get:function(){
 
 return this._age;
 
}
 
set:function(age){
 
this._age = age;
 
}
 
});
 
emp.age = 25;
console.log(emp.age)//输出25,emp.age=25是使用set方法将25赋值给_age,emp.age是使用get方法将_age的读取出来 
delete emp.age; 
console.log(emp.age);//输出undefined,configurable为true,可以使用delete方法将emp.age属性删除

참고: 접근자 속성이 유용할 수 있습니다. 보호 효과는 다음과 같습니다. get 메소드만 있으면 읽을 수만 있고 쓸 수는 없고, 반대로 set만 있으면 쓸 수만 있고 읽을 수는 없습니다

위 내용은 Javascript 객체의 데이터 속성 및 접근자 속성 인스턴스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.