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",{
value: 6,
쓰기 가능:true,
configurable:true,
enumerable: ture
}) // TypeError
configurable 수정됨 flash 는 단방향이며 취소할 수 없습니다.
delete는 개체의 삭제 가능한 속성을 삭제하는 데에만 사용됩니다.
var myObject = {
a:2
};
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(...)을 호출합니다. 객체를 완전 동결할 수도 있습니다.
Getter 및 Setter
var myObject = {
// define a getterget a() {return 2;
}
}
myObject.a = 3;
myObject.a; // 2
a
의getter,만 정의되어 있으므로 a set 값을 설정할 때 작업은 할당 작업을 무시하면 오류가 발생하지 않습니다. 일반적으로 getter
및setter는 쌍으로 나타납니다var myObject = {//
define a getterfor a ( ) { return this._a_;
},
//
aset a(val) {this._a_ = val * 2; }에 대한
setter 정의
};
myObject.a = 2;
myObject.a // 2
존재속성에 액세스하지 않고도 이 속성이 객체에 존재하는지 확인할 수 있습니다.
var myObject = {
a:2
}("a" in myObject); / true
("b" in myObject); // falsemyObject.hasOWnProper("a"); // truemyObject.hasOwnProperty("b") // falseinoperator에서 확인합니다. 속성이 객체와
[[Prototype]] 프로토타입 체인에 있는지 여부. hasOwnProperty(...) 는 속성이
myObject 개체에 있는지 확인합니다. 속성이 열거 될 수 있는지 확인하십시오. 일반 속성 enumerable과 동일
{enumerable: true,value:2}
);Object.defineProperty(myObject,"b",//Let b not enumerable
{열거 가능: false,값:3})myObject.propertyIsEnumberable("a"); // truemyObject.propertyIsEnumber("b") // falseObject.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!