매개 변수 :
(1) obj
필수의. 객체 객체가 할당 된 변수의 이름입니다.
(2) 가치
선택 과목. 모든 JavaScript 원시 데이터 유형 (번호, 부울 또는 문자열). 값이 객체 인 경우 리턴 된 객체는 수정되지 않았습니다. 값이 null, "정의되지 않은"또는 "제공되지 않는"경우 내용이없는 객체가 생성됩니다.
객체 객체의 방법
객체를 생성자로 사용하면 매개 변수를 허용 할 수 있습니다. 매개 변수가 객체 인 경우 객체를 직접 반환합니다. 원래 유형의 값인 경우 값에 해당하는 래퍼 객체를 반환합니다. 이것을 사용하면 변수가 객체인지를 결정하는 함수를 작성할 수 있습니다.
함수 isobject (value) {return value === 객체 (value);}객체 객체에 메소드를 배포하는 두 가지 방법이 있습니다.
객체 객체 자체에 배포됩니다
Object.Prototype 객체에 배포하십시오
Object.keys 메소드는 Object.GetOwpropertyNames 메소드와 매우 유사하며 일반적으로 객체의 속성을 가로 지르는 데 사용됩니다. 그들의 매개 변수는 모두 객체이며, 모두 배열을 반환하고 배열의 멤버는 모두 상속되지 않고 객체 자체의 속성 이름입니다. 이 둘의 차이점은 이전의 반품은 열거 가능한 속성 만 있고, 후자는 또한 발작 할 수없는 속성 이름을 반환한다는 것입니다. 배열의 속성 길이가 없으므로 배열은 일반적으로 Object.keys로 이동합니다.
JavaScript는 Object.Keys (o) .length.length.getownPropertyNames (o) .length를 통해 얻을 수있는 객체 속성 수를 계산하는 메소드를 제공하지 않습니다.
Object.observe 메소드는 객체 속성의 변화를 관찰하는 데 사용됩니다.
프로토 타입 체인 관련 방법 :
object.create () : 새 개체와 객체의 프로토 타입을 생성합니다.
Object.getPrototype () : 객체의 프로토 타입 객체를 가져옵니다.
객체 인스턴스 객체의 메소드
object.prototype.valueof () : 메소드의 값의 함수는 객체의 값을 반환하는 것입니다. 기본적으로 객체 자체가 반환됩니다. 이 방법의 주요 목적은 JavaScript가 자동으로 유형을 변환 할 때이 메소드가 기본적으로 호출된다는 것입니다.
Object.Prototype.tostring () : Tostring 메소드의 기능은 객체의 문자열 형태를 반환하는 것입니다. 문자열 첨가에 객체를 사용하면 Tostring 메소드가 자동으로 호출됩니다.
호출 방법을 사용하여 모든 값에서 Object.Prototype.toString 메소드를 호출 하여이 값의 유형을 결정할 수 있습니다. 다른 데이터 유형의 ToString 방법의 반환 값은 다음과 같습니다.
값 : 반환 [객체 번호]
문자열 : return [Object String]
부울 : 반환 [Object Boolean]
정의되지 않은 : return [object undefined]
NULL : 반환 [Object NULL]
Object : "[Object" + 생성자의 이름 + "]를 반환합니다."
Object.prototype.tostring.call (2) // "[개체 번호]"Object.prototype.tostring.call ( '') // "[Object String]"
이 기능을 사용하면 연산자 유형보다 정확한 유형 판단 기능을 작성할 수 있습니다.
var type = function (o) {var s = object.prototype.tostring.call (o); s.match를 반환합니다 (// [object (.*?)/]/) [1] .tolowercase ();}; type ({}); // "Object"유형 ([]); // "배열"유형 (5); // "숫자"위의 유형 함수를 기반으로 특정 유형의 데이터를 구체적으로 결정하는 메소드를 추가 할 수도 있습니다.
[ 'null', 'undefined', 'object', 'array', 'string', 'number', 'boolean', 'function', 'regexp', 'element', 'nan', 'infinite']. foreach (t) {type [ 'is' + t] = function (o) {return type (o) == t.tolowercase (); };}); type.isobject ({}); // truetype.isnumber (nan); // falsetype.iselement (document.createElement ( 'div')); // 진실객체의 속성 모델
JavaScript에서 각 속성에는 해당 속성 객체가있어 속성의 메타 정보를 저장합니다. Object.getOwnPropertyDescriptor 메소드를 사용하여 O 개체의 P 속성의 속성 객체를 읽으십시오. 속성 객체에는 다음 메타 정보가 포함되어 있습니다.
값 :이 속성의 값을 나타내며, 기본적으로 정의되지 않습니다 (쓰기 가능하고 구성 가능 중 하나가 사실이라면 변경 될 수 있습니다).
쓰기 가능 :이 속성의 값이 변경 될 수 있는지 여부를 나타냅니다. 기본값은 참입니다.
열거 가능 : 속성이 열거 가능 여부를 나타냅니다. 기본값이 참입니다. 일반적으로, 시스템 기본 특성 (즉, 비 사용자 정의 특성)은 열거 할 수 없습니다.
"구성 가능성"을 나타내며 기본값은 true로 표시됩니다. False로 설정된 경우 속성을 삭제할 수 없으며 속성 객체를 변경하지 않아야 함을 의미합니다 (값 속성을 제외하고 쓸 수있는 경우 값이 여전히 변경 될 수 있음), 즉 구성 가능한 속성은 속성 객체의 쓸 수 있습니다.
이 속성을 나타내는 값 함수 (getter)는 기본적으로 정의되지 않았습니다.
이 속성을 나타내는 값 저장 기능 (Setter)은 기본값이 정의되지 않았습니다.
var o = {p : 'a'}; object.getOrpropertydescriptor (o, 'p'); // object {// value : "a", // writable : true, // enumerable : true, // configurable : true //}Object.DefineProperty 메소드를 사용하면 속성 객체를 정의하여 속성을 정의하거나 수정 한 다음 수정 된 객체를 반환 할 수 있습니다. 형식은 다음과 같습니다.
Object.DefineProperty (Object, PropertyName, AttributeObject)
object.defineProperty 메소드는 세 가지 매개 변수를 허용하고, 첫 번째는 속성이 위치한 객체, 두 번째는 속성 이름 (문자열이어야 함)이고 세 번째는 속성 설명 객체입니다. 이 방법을 통해 속성 객체의 쓰기 가능, 구성 가능하며 열거 가능한 속성의 기본값은 False입니다.
Object.DefineProperty (o, "p", {value : "bar"}); object.getownPropertydescriptor (o, 'p'); // object {// value : "bar", // writable : false, // enumerable : false, // configurable : false //}여러 속성이 한 번에 정의되거나 수정되면 Object.DefineProperties 메소드를 사용할 수 있습니다. 일단 값 함수가 얻어지면 (또는 값 스토리지 함수 세트) 정의되면 쓰기 가능을 true로 설정할 수 없거나 값 속성이 동시에 정의됩니다. 그렇지 않으면 오류 가보고됩니다.
var o = object.defineProperties ({}, {p1 : {value : 123, enumerable : true}, p2 : {value : "abc", enumerable : true}, p3 : {function () {return this.p1 + this.p2}, enumer : true});열거 가능한 속성을 설정하는 데 사용될 수 있습니다. 속성의 열거가 False 인 경우, for..in 루프, Object.keys 메소드 및 JSON.stringify 메소드는 속성을 얻지 못하지만 그 값은 O.xx를 통해 직접 얻을 수 있습니다.
for… in loop과 object.keys 방법의 차이점은 전자가 프로토 타입 객체에서 상속 된 객체의 특성을 포함하고, 후자는 객체 자체의 특성 만 포함한다는 것입니다. 열거 가능한 값에 관계없이 객체 자체의 모든 속성을 가져와야하는 경우 객체를 사용할 수 있습니다.
구성 가능성은 변수를 삭제할 수 있는지 여부를 결정합니다. var 명령을 사용하여 변수가 선언되면 변수의 구성 가능은 false이며 var 명령을 사용하여 변수가 선언되면 (또는 속성 할당을 사용하여 변수가 선언) 변수의 구성 가능성이 true입니다. 즉, Delete는 객체의 속성 만 삭제할 수 있습니다.
var a1 = 1; // 구성 가능 : falSesea2 = 1; // 구성 가능 : true (this.a2 = 1)
직접 정의 외에도 액세서 기능을 사용하여 속성을 정의 할 수도 있습니다. 그중에서도 값 저장 기능을 세트라고하며 세트 명령을 사용합니다. 값 획득 함수를 get 명령을 사용하는 getter라고합니다. 액세스 함수를 사용하여 데이터 객체와 DOM 객체 사이의 양방향 바인딩을 실현할 수 있습니다.
Object.DefineProperty (user, 'name', {get : function () {return document.getElementById ( "foo"). value}, set : function (newValue) {document.getElementById ( "foo").객체 상태를 제어합니다
JavaScript는 객체의 읽기 및 쓰기 상태를 정확하게 제어하고 객체가 변경되는 것을 방지하는 세 가지 방법을 제공합니다. 가장 약한 보호 층은 예방 텍스트, 그리고 가장 강한 동결 인 SEAL이 뒤 따릅니다.
Object.preventextensions 메소드는 객체를 새 특성을 추가 할 수 없게 만들 수 있지만 삭제 명령을 사용하여 기존 속성을 삭제할 수 있습니다. Object.isextensible 메소드를 사용하여 객체를 추가 할 수 있는지 확인할 수 있습니다.
객체 .seal 방법을 사용하면 객체가 새 특성을 추가하거나 이전 속성을 삭제하는 것을 불가능합니다. Object.seal은 또한 속성 객체의 구성 가능한 속성을 기존 속성의 객체를 False로 설정하여 객체를 더 이상 변경할 수 없도록합니다. Object.issealed 메소드는 객체가 Object.seal 메소드를 사용하는지 확인하는 데 사용됩니다.
객체. freeze 메소드는 객체를 새 속성을 추가 할 수 없게 만들고, 오래된 속성을 삭제하고, 속성의 값을 변경 하여이 객체를 실제로 일정하게 만듭니다. Object.isfrozen 메소드는 객체가 개체를 사용하는지 여부를 확인하는 데 사용됩니다 .Freeze () 메소드.
위의 방법을 사용하여 객체의 서면 성을 잠그지 만 객체의 프로토 타입 객체를 변경하여 속성을 추가 할 수 있습니다.
var o = new Object (); object.preventextensions (o); var proto = object.getPrototylef (o); proto.t = "hello"; ot // Hello
한 가지 해결책은 프로토 타입을 동결시키는 것입니다.
var o = object.seal (object.create (object.freeze ({x : 1}), {y : {value : 2, writable : true}}); object.getPrototyp (o) .t = "hello"; ot // 정의되지 않은추신:
객체 객체는 다른 모든 JavaScript 객체에 포함됩니다. 모든 방법과 속성은 다른 모든 객체에 사용할 수 있습니다. 메소드는 사용자 정의 객체에서 재정의 할 수 있으며 적절한 시간에 JavaScript로 호출 할 수 있습니다. ToString 방법은 자주 재정의 된 객체 방법의 예입니다.
이 언어 참조에서 각 객체 메소드의 설명에는 내부 JavaScript 객체에 대한 기본 및 객체 별 구현 정보가 포함됩니다.
IE 호환성 측면에서 Microsoft의 MSDN 문서는 "Internet Explorer 6 이전에 인터넷 익스플로러에서 객체 객체가 소개되었습니다."