ตัวแปรทั้งหมดในจาวาสคริปต์เป็นวัตถุโดยมีข้อยกเว้นสองข้อและไม่ได้กำหนด
การคัดลอกรหัสมีดังนี้:
false.tostring ();
[1, 2, 3] .tostring ();
function foo () {}
foo.bar = 1;
foo.bar;
ความเข้าใจผิดทั่วไปคือค่าตัวอักษรของตัวเลขไม่ใช่วัตถุ นี่เป็นเพราะข้อผิดพลาดในตัวแยกวิเคราะห์ JavaScript ที่พยายามแยกวิเคราะห์ตัวดำเนินการจุดเป็นส่วนหนึ่งของค่าตัวเลขตัวเลขลอยตัว
การคัดลอกรหัสมีดังนี้:
2.tostring ();
มีวิธีแก้ปัญหามากมายที่จะทำให้ค่าตามตัวอักษรของตัวเลขดูเหมือนวัตถุ
การคัดลอกรหัสมีดังนี้:
2..Tostring ();
2.tostring ();
(2) .tostring ();
วัตถุเป็นประเภทข้อมูล
วัตถุ JavaScript สามารถใช้เป็นตารางแฮชและส่วนใหญ่จะใช้เพื่อบันทึกการติดต่อระหว่างคีย์ชื่อและค่า
การใช้ไวยากรณ์ตัวอักษรของวัตถุ - {} - สามารถสร้างวัตถุง่ายๆ วัตถุที่สร้างขึ้นใหม่นี้สืบทอดมาจาก Object.prototype ด้านล่างโดยไม่มีคุณสมบัติที่กำหนดเอง
การคัดลอกรหัสมีดังนี้:
var foo = {};
// วัตถุใหม่ที่มีคุณสมบัติ 'ทดสอบ' ที่กำหนดเองด้วยค่า 12
var bar = {test: 12};
คุณสมบัติการเข้าถึง
มีสองวิธีในการเข้าถึงคุณสมบัติของวัตถุตัวดำเนินการ DOT หรือผู้ดำเนินการวงเล็บ
การคัดลอกรหัสมีดังนี้:
var foo = {ชื่อ: 'ลูกแมว'}
foo.name;
foo ['name'];
var get = 'ชื่อ';
foo [รับ];
foo.1234;
foo ['1234'];
ไวยากรณ์ทั้งสองนั้นเทียบเท่ากัน แต่ตัวดำเนินการตัวยึดยังคงใช้ได้ในสองสถานการณ์ต่อไปนี้ - คุณสมบัติการตั้งค่าแบบไดนามิก - ชื่อแอตทริบิวต์ไม่ใช่ชื่อตัวแปรที่ถูกต้อง (หมายเหตุของนักแปล: ตัวอย่างเช่นชื่อแอตทริบิวต์มีช่องว่างหรือชื่อแอตทริบิวต์คือ คำสำคัญของ JS)
หมายเหตุของนักแปล: ในเครื่องมือตรวจจับไวยากรณ์ JSLINT แนะนำให้ใช้ตัวดำเนินการจุด
ลบแอตทริบิวต์
วิธีเดียวที่จะลบคุณสมบัติคือการใช้ตัวดำเนินการลบ
การคัดลอกรหัสมีดังนี้:
14
var obj = {
บาร์: 1,
foo: 2,
Baz: 3
-
obj.bar = ไม่ได้กำหนด;
obj.foo = null;
ลบ obj.baz;
สำหรับ (var i ใน obj) {
if (obj.hasownproperty (i)) {
console.log (i, '' + obj [i]);
-
-
ผลลัพธ์เอาต์พุตข้างต้นมีแถบที่ไม่ได้กำหนดและ foo null - มีเพียง BAZ เท่านั้นที่ถูกลบออกไปดังนั้นมันจึงหายไปจากผลลัพธ์ผลลัพธ์
ไวยากรณ์ของชื่อแอตทริบิวต์
การคัดลอกรหัสมีดังนี้:
test var = {
'กรณี': 'ฉันเป็นคำหลักดังนั้นฉันต้องถูกบันทึกเป็นสตริง'
DELETE: 'ฉันเป็นคำหลักเช่นกันดังนั้นฉัน' // ข้อผิดพลาด: SyntaxError
-
ชื่อแอตทริบิวต์ของวัตถุสามารถประกาศได้โดยใช้สตริงหรืออักขระปกติ อย่างไรก็ตามเนื่องจากการออกแบบที่ผิดพลาดอีกครั้งของตัวแยกวิเคราะห์ JavaScript วิธีการประกาศครั้งที่สองด้านบนจะส่งข้อผิดพลาด syntaxError ก่อน ECMAScript 5
เหตุผลสำหรับข้อผิดพลาดนี้คือการลบเป็นคำหลักในภาษา JavaScript;