이 기사에서는 js의 객체 객체가 무엇인지 설명합니다. js에서 객체 객체를 사용하는 방법에 대한 요약은 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
JavaScript는 객체의 값을 설명하고 속성의 쓰기 가능, 구성 가능, 수정 가능 및 열거 가능 여부와 같은 동작을 제어하는 내부 데이터 구조를 제공합니다. 이 내부 데이터 구조를 '속성 설명자'라고 합니다.
각 속성에는 속성의 메타 정보를 저장하는 고유한 해당 속성 설명자가 있습니다.
{ value:'前端', writable:false, enumerable:true, configurable:false, get:undefined, set:undefined }
현재 객체에 존재하는 속성 설명자에는 데이터 설명자와 액세스 설명자의 두 가지 주요 형태가 있습니다.
데이터 설명자는 값이 있는 속성이며 쓰기 가능하지 않을 수도 있습니다. 데이터 설명자에는 다음과 같은 선택적 키 값이 있습니다.
value: 이 속성에 해당하는 값은 유효한 JavaScript 값(숫자 값, 객체, 함수 등)일 수 있습니다. 기본값은 정의되지 않음
writable입니다. 속성의 쓰기 가능 여부가 true인 경우 할당 연산자로 값을 변경할 수 있습니다. 기본값은 false
configurable: 속성의 configurable이 true인 경우 속성 설명자를 변경할 수 있으며, 해당 개체에서 속성을 삭제할 수도 있습니다. 기본값은 false
enumerable입니다. 이 속성의 열거 가능이 true이면 해당 속성이 객체의 열거 속성에 나타날 수 있습니다. 기본값은 false입니다
액세스 설명자는 getter-setter 함수 쌍으로 설명되는 속성입니다. 액세스 설명자에는 다음과 같은 선택적 키 값이 있습니다.
get: 속성에 대한 getter 메서드를 제공합니다. getter가 없으면 정의되지 않습니다. 속성에 액세스하면 메서드가 실행됩니다. 메서드가 실행될 때 매개 변수가 전달되지 않지만 this 개체가 전달됩니다.
set: 속성에 대한 설정자를 제공하는 메서드입니다. 설정자가 없으면 정의되지 않습니다. 이 메서드는 속성 값이 수정될 때 트리거됩니다. 이 메서드는 속성의 새 매개변수 값인 유일한 매개변수를 허용합니다.
configurable: 속성의 configurable이 true인 경우 속성 설명자를 변경할 수 있으며, 해당 개체에서 속성을 삭제할 수도 있습니다. 기본값은 false입니다.
enumerable: 속성의 이 속성이 나타날 수 있습니다. enumerable이 true인 경우에만 객체의 열거 속성입니다. 기본값은 false입니다.
Object.getOwnPropertyDescriptor() 메서드는 지정된 개체의 고유 속성에 해당하는 속성 설명자를 반환합니다.
Object.getOwnPropertyDescriptor(obj,prop)
obj: 찾을 대상 객체
prop: 대상 객체의 속성 이름(문자열 형식)
반환 값: 지정된 속성이 객체에 존재하는 경우 해당 속성 설명자를 반환합니다. object , 그렇지 않으면 undefine
var obj={} obj.attr='前端'; console.log(Object.getOwnPropertyDescriptor(obj,'attr'));
1을 반환합니다. Object.defineProperty() 메서드는 객체에 대한 새 속성을 정의하거나 기존 속성을 수정하고 정의할 object
Object.defineProperty(obj,prop,descriptor);
obj를 반환합니다. on it 속성의 개체
prop: 정의하거나 수정할 속성의 이름
descriptor: 함수에 전달될 개체
반환 값: 전달되는 개체
2.Object 함수에 DefineProperties() 메서드는 하나 이상의 새 속성을 정의하거나 객체에 대한 기존 속성을 수정하고 객체
Object.defineProperties(obj,props)
obj를 반환합니다. 즉, 속성이 정의될 객체입니다.
props: 정의하려는 열거 가능 속성 또는 수정된 속성 설명자의 객체
반환 값: 함수에 전달된 객체
1.값: 대상 속성에 해당하는 값을 나타냅니다. 유효한 JavaScript 값(숫자 값, 개체, 함수 등)이 될 수 있습니다. 기본값은 대상 속성의 값을 수정할 수 있는지 여부를 나타내는 undefound
var obj={}; obj.name='张三'; var attr=Object.getOwnPropertyDescriptor(obj,'name'); console.log(attr.value); Object.defineProperty(obj,'name',{value:'李四'}); console.log(obj.name);
2.writable:Boolean 값입니다. 속성의 쓰기 가능 여부가 true인 경우 할당 연산자에 의해 값이 변경될 수 있습니다. 기본값은 false
var obj={}; Object.defineProperty(obj,'attr',{ value:'前端', writable:false }); console.log(obj.attr); obj.attr=100; console.log(obj.attr);
3.configurable:Boolean 값으로, 대상 속성의 설명자를 수정할 수 있는지 여부를 나타냅니다. 속성의 configurable이 true인 경우 속성 설명자를 변경할 수 있으며, 해당 객체에서 속성을 삭제할 수도 있습니다. 기본값은 false
var obj=Object.definePropety({},'attr',{ value:'大前端', configurable:false }); Object.definePropety(obj,'attr',{value:100}); Object.definePropety(obj,'attr',{writable:true}); Object.definePropety(obj,'attr',{enumerable:true}); Object.definePropety(obj,'attr',{configurable:true});
4.enumerable:Boolean 값으로, 대상 속성을 순회할 수 있는지 여부를 나타냅니다. 속성의 열거 가능 항목이 true인 경우 해당 속성은 객체의 열거 속성에 나타날 수 있습니다. 기본값은 false입니다.
객체 속성의 열거 가능한 값이 false인 경우 다음 세 가지 작업으로 속성을 가져올 수 없습니다.
for...in 문
Object.keys() 메서드
JSON .stringify() 메소드
var obj={}; Object.defineProperty(obj,'attr',{value:'前端',enumerable:false}); for(var key in obj){console.log(key);} console.log(Object.keys(obj)); console.log(JSON.stringify(obj));
객체의 속성은 직접 정의하는 것 외에도 접근자를 사용하여 정의할 수도 있습니다. 그중 setter는 값을 저장하는 함수이고, 속성 설명자에서 set을 사용합니다. getter는 값 함수이므로 속성 설명자에서 get을 사용합니다.
var obj=Object.defineProperty({},'attr',{ get:function(){ return '前端'; }, set:function(){ console.log('setter:'+value); } }); console.log(obj.attr); obj.attr=100;
위에서 언급한 접근자 작성 방법 외에도 JavaScript는 다음과 같은 작성 기능을 제공합니다. 방법:
var obj={ get attr(){ return '前端'; }, set attr(value){ console.log('setter:'+value); } } console.log(obj.attr); obj.attr=100;
定义的对象默认在任何时候、任何位置,无论有意义的还是无意义的都可以修改对象的属性或方法。
而这些篡改可能会影响对象的内置属性或方法,从而导致对象的正常功能可能无法使用。
1.禁止扩展:禁止为对象扩展新的属性或方法
var obj={}; Object.preventExtensions(obj); obj.attr='前端'; console.log(Object.isExtensible(obj)); console.log(obj.attr);
2.密封对象:禁止扩展新的属性或方法,禁止配置现有的属性或方法的描述符,仅允许读写属性的值
var sealed={}; Object.seal(sealed); Object.isSealed(sealed); Object.isExtensible(sealed);
3.冻结对象:禁止对对象执行任何修改操作
var frozen={1:81}; Object.isFrozen(frozen); Object.freeze(frozen); Object.isFrozen(frozen); Object.isSealed(frozen); Object.isExtensible(frozen);
相关推荐:
浅谈Javascript中Object与Function对象_javascript技巧
위 내용은 js의 Object 객체는 무엇입니까? js에서 객체 객체를 사용하는 방법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!