ใน JS การสร้างวัตถุ (สร้างวัตถุ) ไม่ใช่การสร้างวัตถุคลาสอย่างที่เรามักพูดกัน วัตถุใน JS เน้นประเภทคอมโพสิต การสร้างวัตถุและการเข้าถึงวัตถุใน JS นั้นมีความยืดหยุ่นอย่างมาก
วัตถุ JS เป็นประเภทคอมโพสิตที่ให้คุณจัดเก็บและเข้าถึงได้ผ่านชื่อตัวแปร กล่าวคือ วัตถุคือคอลเลกชันคุณสมบัติที่ไม่เรียงลำดับ แต่ละรายการในคอลเลกชันประกอบด้วยชื่อและค่า (ไม่ ฟังดูแปลกๆ ไหม เช่นเดียวกับตาราง HASH พจนานุกรม คู่คีย์/ค่าที่เรามักจะได้ยิน) และประเภทของค่าอาจเป็นประเภทที่มีอยู่แล้วภายใน (เช่น ตัวเลข สตริง) หรือวัตถุ
1. ล้อมรอบด้วยวงเล็บปีกกาคู่หนึ่ง
คัดลอกรหัสรหัสดังต่อไปนี้:
var EmptyObj = {};
var myObj =
-
'id': 1, //ชื่อแอตทริบิวต์จะอยู่ในเครื่องหมายคำพูดและคุณลักษณะจะถูกคั่นด้วยเครื่องหมายจุลภาค
'ชื่อ': 'ชื่อของฉัน'
-
//var m = new myObj(); //ไม่รองรับ
ฉันสงสัยว่าคุณสังเกตเห็นว่าวัตถุทั้งหมดถูกประกาศโดยใช้ var หรือไม่ มันเหมือนกับโค้ดด้านบน มันมีเพียงสำเนาเดียวเท่านั้น ส่วน. สิ่งนี้จะจำกัดการนำออบเจ็กต์กลับมาใช้ใหม่อย่างมาก เว้นแต่ว่าออบเจ็กต์ที่คุณสร้างต้องการเพียงสำเนาเดียว ให้ลองใช้วิธีอื่นเพื่อสร้างออบเจ็กต์
ลองมาดูวิธีการเข้าถึงคุณสมบัติและวิธีการของวัตถุ
คัดลอกรหัสรหัสดังต่อไปนี้:
var myObj =
-
'รหัส': 1,
'สนุก': ฟังก์ชั่น () {
document.writeln(this.id + '-' + this.name);//เข้าถึงในโหมด "object.property"
-
'ชื่อ': 'myObj',
'fun1': ฟังก์ชั่น () {
document.writeln(this['id'] + '+' + this['name']);//เข้าถึงในโหมดการรวบรวม
-
-
myObj.สนุก();
myObj.fun1();
// ผลลัพธ์
// 1-myObj 1+myObj
2. ใช้คีย์เวิร์ดฟังก์ชันเพื่อจำลองคลาส
ใช้สิ่งนี้ในฟังก์ชันเพื่ออ้างถึงวัตถุปัจจุบันและประกาศคุณสมบัติโดยการกำหนดค่าให้กับพวกมัน หากมีการประกาศตัวแปรด้วย var ตัวแปรนั้นจะเป็นตัวแปรภายในเครื่องและสามารถเรียกได้เฉพาะในคำจำกัดความของคลาสเท่านั้น
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น myClass() {
นี่.id = 5;
this.name = 'คลาสของฉัน';
this.getName = ฟังก์ชั่น() {
ส่งคืน this.name;
-
-
var my = ใหม่ myClass();
การแจ้งเตือน (my.id);
alert(my.getName());
// ผลลัพธ์
// 5
//คลาสของฉัน
3. สร้างวัตถุในส่วนเนื้อหาของฟังก์ชัน ประกาศคุณสมบัติและส่งคืน
หากต้องการสร้างอ็อบเจ็กต์ในเนื้อความของฟังก์ชัน คุณสามารถใช้เมธอดในจุดแรก หรือใช้ new Object(); ก่อนแล้วจึงกำหนดค่าให้กับแต่ละแอตทริบิวต์
อย่างไรก็ตาม วัตถุที่สร้างขึ้นในลักษณะนี้ไม่มีพร้อมท์อัจฉริยะใน VS2008 SP1
คัดลอกรหัสรหัสดังต่อไปนี้:
ฟังก์ชั่น myClass() {
วาร์ obj =
-
'รหัส':2,
'ชื่อ':'myclass'
-
กลับ obj;
-
ฟังก์ชั่น _myClass() {
var obj = วัตถุใหม่ ();
obj.id = 1;
obj.name = '_myclass';
กลับ obj;
-
var my = ใหม่ myClass();
var _my = ใหม่ _myClass();
การแจ้งเตือน (my.id);
การแจ้งเตือน (ชื่อของฉัน);
การแจ้งเตือน(_my.id);
การแจ้งเตือน (_my.name);
// ผลลัพธ์
// 2
//คลาสของฉัน
// 1
// _myclass