สร้างวัตถุ
•การวัดวัตถุโดยตรง
var o = {foo: "bar"}•ฟังก์ชั่นตัวสร้าง
var o = วัตถุใหม่ ();
•มรดกต้นแบบ
var p = object.create (o);
การสืบทอดชั้นเรียน
วัตถุ JavaScript มีคุณสมบัติของตัวเองและคุณสมบัติที่สืบทอดมา
•เมื่อสอบถามแอตทริบิวต์ x ของวัตถุ O ให้มองหาแอตทริบิวต์ x ใน o หากไม่พบให้มองหาแอตทริบิวต์ x ในวัตถุต้นแบบของ O จนกระทั่ง X หรือวัตถุที่พบต้นแบบเป็นโมฆะ
•เมื่อกำหนดค่าให้กับแอตทริบิวต์ x ของวัตถุ o หากมีคุณสมบัติ x ใน o อยู่แล้วให้เปลี่ยนค่าของ x หากไม่มีคุณสมบัติ x ใน o ให้สร้างแอตทริบิวต์ x สำหรับ O และกำหนดค่า
•นั่นคือห่วงโซ่ต้นแบบจะทำงานได้ก็ต่อเมื่อการสืบค้น
var o = {x: 1}; ฟังก์ชั่น p () {this.y = 2; } p.prototype = o; var t = ใหม่ p (); console.log (t); console.log ('x' ใน t); // true console.log (t.hasownproperty ('x')); // falseคุณสามารถใช้หรือ HasownProperty เพื่อตรวจสอบว่ามีคุณสมบัติในวัตถุหรือไม่
คุณสมบัติของวัตถุ
•ถ่ายโอนผ่านคุณสมบัติของวัตถุ
คุณสามารถใช้สำหรับ .. ในการสำรวจคุณสมบัติของวัตถุ
เมื่อใช้สำหรับ .. ในการวนซ้ำคุณสมบัติในห่วงโซ่ต้นแบบ คำสั่งข้ามคือการสำรวจความสำคัญที่กว้าง
ดังนั้นการใช้ HasownProperty สามารถตรวจสอบได้ว่าเป็นแอตทริบิวต์ของวัตถุหรือไม่
•คุณสมบัติของคุณสมบัติวัตถุ
ใช้ object.getownpropertydescriptor () เพื่อรับ descriptor สำหรับคุณสมบัติเฉพาะวัตถุ
เขียนได้หมายความว่าแอตทริบิวต์วัตถุสามารถเขียนได้หรือไม่
ตัวอย่างเช่น
var o = {foo: 'bar'} object.defineProperty (o, "foo", {writable: false}); o.foo = 'world'; console.log (o.foo); //หนังสือรับรองหมายถึงว่าแอตทริบิวต์วัตถุนั้นสามารถระบุได้หรือไม่
ตัวอย่างเช่น
ความยาวของความยาวและแอตทริบิวต์อื่น ๆ ในอาร์เรย์เป็นเท็จดังนั้น
สำหรับ (p ในอาร์เรย์) {console.log (p);}ไม่มีอะไรเอาท์พุท
สามารถกำหนดค่าได้หมายถึงการกำหนดค่าและการแจงนับของคุณสมบัติสามารถแก้ไขได้หรือไม่
คุณสมบัติการกำหนดค่าเหล่านี้สามารถกำหนดได้โดยใช้ Object.defineProperties
Object.defineProperty (o, "foo", {writable: false});
รับหมายถึงวิธีการรับคุณสมบัติวัตถุ
ชุดแสดงถึงวิธีการตั้งค่าคุณสมบัติวัตถุ
ตัวอย่าง
var book = {_year: 2004, Edition: 1}; Object.defineProperty (หนังสือ, "ปี", {get: function () {console.log ('Get Year'); return._year;}, set: function (newValue) {console.log += newValue - 2004;วิธีการคัดค้าน
ToString แปลงวัตถุเป็นสตริง การแปลงเริ่มต้นจะเป็นเช่น [Object Object] ดังนั้นหากคุณต้องการแปลงเป็นรูปแบบ JSON คุณสามารถใช้ json.stringify
ต้องใช้คุณค่าของการแปลงวัตถุเป็นประเภทอื่น ในทำนองเดียวกันไม่มีอะไรที่คุ้มค่าที่จะพูดเกี่ยวกับการแปลงเริ่มต้น
วัตถุที่ใช้งานได้
คุณสามารถสร้างวัตถุที่ใช้งานได้โดยวิธีการต่อไปนี้
แถบฟังก์ชัน (o) {var f = function () {return "Hello World!"; } o .__ proto__ = f .__ proto__; f .__ proto__ = o; return f;} var o = {x: 5}; var foo = bar (o); console.log (foo ()); console.log (foo.x); console.log (typeof foo); // ฟังก์ชั่นมันสามารถใช้เป็นวัตถุ (ด้วยห่วงโซ่ต้นแบบ) หรือเป็นฟังก์ชันที่เรียกมันโดยตรง