>  기사  >  웹 프론트엔드  >  자바스크립트 상식 공유

자바스크립트 상식 공유

零下一度
零下一度원래의
2017-06-30 10:32:501237검색

Objects

객체는 두 가지 형식으로 정의할 수 있습니다. 선언적 형식과 생성된 형식

선언적 형식 구문: var myObj = {key:value}

구성형 형식 구문: var myObj = new Object(); myObj.key = value;

유형: 6가지 언어 유형이 있습니다. : 문자열 번호 부울 null 정의되지 않은 개체

내장 개체: 문자열 번호 부울 개체 함수 배열 날짜 RegExp Error

var myObject = {

 a:2

}

  myObject.a; //2 속성 액세스

  myObject["a"] // 2 키 액세스

ES 6 계산 가능한 속성 Name

var prefix = "foo";

var myObject = {

[prefix + "bar"] : "hello",

[prefix + "baz"]: "world"

};

myObject["foobar"]; // hello

myObject["foobaz"]; // world

1.writable 속성 값을 수정할 수 있는지 확인

var myObject = {};

Object.defineProperty (myObject, "a", {

value value

2, writable : false, // writable

!

conconfigurable : true,

enumerable : true

});

myObject.a = 3;

myObject.a; // 2

2.configurable 속성을 구성할 수 있는 한 defineProperty(..)

메서드를 사용하여 수정할 수 있습니다. 설명 속성.

var myObject = {

a : 2

};

myObject.a = 3;

myObject.a; // 3

Object.defineProperty(myObject,"a",{value : 4

,

writable:true,configurable:false,//

구성 불가능

enumerable: ture

});

myObject.a; .a = 5;

myObject.a; // 5

Object.defineProperty(myObject,"a",{

value6,

쓰기 가능:true,

configurable:true,

enumerable: ture

}) // TypeError

configurable 수정됨 flash 는 단방향이며 취소할 수 없습니다.

delete는 개체의 삭제 가능한 속성을 삭제하는 데에만 사용됩니다.

var myObject = {

a2

};

myObject.a //2

delete myObject.a;

myObject.a // 정의되지 않음

3.enumer 객체의 속성 열거에 속성이 나타나는지 여부를 제어할 수 있습니다.

1.객체 상수는 writable: false configurable: false 와 결합되어 진정한 상수 속성

을 생성할 수 있습니다(수정, 재정의 또는 삭제할 수 없음).

var myObject = {};

Object.defineProperty(myObject,"FAVORITE_NUMBER",{

value: 42,

쓰기 가능: false,

구성 가능: false

})

2.확장 금지

객체가 새 속성을 추가하고 기존 속성을 유지하는 것을 금지하려면 Object.preventExtensions(...)

var myObject = {

a:2

};

Object.preventExtensions(myObject);

myObject.b = 3;

myObject.a; // 정의되지 않음

3.Seal

Object.seal(...) 생성 " 보존된 개체 ", 이 메서드는 실제로 기존 개체에 대해

Object.preventExtensions(...) 를 호출하고 모든 속성을 configurable:false.

4로 표시합니다. Freeze

Object.freeze(...) 이 메서드는 실제로 기존 개체에 대해

Object.seal(...)을 호출합니다. 객체를 완전 동결할 수도 있습니다.

GetterSetter

var myObject = {

// define a getterget a() {return 2;

}

}

myObject.a = 3;

myObject.a; // 2

a

getter,만 정의되어 있으므로 a set 값을 설정할 때 작업은 할당 작업을 무시하면 오류가 발생하지 않습니다. 일반적으로 getter

setter는 쌍으로 나타납니다var myObject = {//

define a

getter

for a ( ) { return this._a_;

},

//

a

set a(val) {this._a_ = val * 2; }에 대한

setter 정의

};

myObject.a = 2;

myObject.a // 2

존재

속성에 액세스하지 않고도 이 속성이 객체에 존재하는지 확인할 수 있습니다.

var myObject = {

a2

}("a" in myObject); / true

("b" in myObject); // false

myObject.hasOWnProper("a"); // true

myObject.hasOwnProperty("b") // false

in

operator에서 확인합니다. 속성이 객체와

[[Prototype]] 프로토타입 체인에 있는지 여부. hasOwnProperty(...) 는 속성이

myObject 개체에 있는지 확인합니다. 속성이 열거 될 수 있는지 확인하십시오. 일반 속성 enumerable과 동일

{enumerable: true,value:2}

);

Object.defineProperty(

myObject,

"b",

//

Let b not enumerable

{열거 가능: false,값:3}

)

myObject.propertyIsEnumberable("a"); // true

myObject.propertyIsEnumber("b") // false

Object.keys(myObject ); // ["a"]

Object.getOwnPropertyName(myObject); // ["a","b"]

propertyIsEnumerable(...) 는 주어진 속성 이름이 객체에 직접 존재하는지 확인합니다. (프로토타입 체인 대신 ) enumerable:true

Object.keys(...)를 충족합니다.

는 모든 열거 가능한 속성을 포함하는 배열을 반환합니다.

Object.getOwnPropertyNames(...)

배열을 반환합니다. 열거 가능 여부에 관계없이 모든 속성을 포함

Traversing

for .. in 객체의 열거 가능한 속성 목록을 반복하는 데 사용할 수 있습니다.

숫자 인덱스 배열의 경우 표준을 사용할 수 있습니다. for loop

ES5 새로 추가됨

forEach(..) Every(...) some(..)

forEach(...) 는 배열의 모든 값을 순회하고 값을 무시합니다. 콜백 함수의 반환 값입니다.

every(...) 콜백 함수가 반환될 때까지 실행됩니다

falsesome(...) 콜백 함수가 반환될 때까지 실행됩니다

trueEs6 increase

for . . 루프 구문

 var myArray = [1,2,3]; for(var v of myArray){

 console.log(v)

 }일반 객체에는 없습니다.

@ @iterator,

탐색하려는 객체를 사용자 정의할 수 있습니다var myObject = { a:2,

 b:3

};

Object.defineProperty(myObject,Symbol.iterator,{

열거 가능: false,

쓰기 가능: false,

구성 가능: true,value: function() {

var o = this;

var idx = 0;

var ks = Object.keys(o);

return {

next: function(){

value: o[ks[idx++]],

done:(idx > ks.length)

}

}

}

})

// 수동 순회myObject

var it = myObject[Symbol.iterator]();

it.next() // {value: 2, done: false}

it.next(); // {value: 3, done: false}

it.next() // { 정의되지 않음, done: true}

// 사용 for..of 을 사용하여 myObject

for(var v of myObject){

  console.log(v)

} // 2 // 3

위 내용은 자바스크립트 상식 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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