js의 Object 객체는 무엇입니까? js에서 객체 객체를 사용하는 방법 요약

不言
풀어 주다: 2018-08-15 14:37:10
원래의
2904명이 탐색했습니다.

이 기사에서는 js의 객체 객체가 무엇인지 설명합니다. js에서 객체 객체를 사용하는 방법에 대한 요약은 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Property Descriptor

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);
로그인 후 복사

相关推荐:

JS中Object对象的原型的使用方法

js如何打印object对象_javascript技巧

详解JavaScript中的Object对象 的示例代码

浅谈Javascript中Object与Function对象_javascript技巧

위 내용은 js의 Object 객체는 무엇입니까? js에서 객체 객체를 사용하는 방법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!