Getter เป็นวิธีการรับค่าของแอตทริบิวต์และ Setter เป็นวิธีการตั้งค่าค่าของแอตทริบิวต์ สามารถกำหนดวิธีการ getter และ setter สำหรับวัตถุหลักที่กำหนดไว้ล่วงหน้าหรือวัตถุที่ผู้ใช้กำหนดไว้เพิ่มคุณสมบัติใหม่ให้กับวัตถุที่มีอยู่
มีสองวิธีในการกำหนดวิธี getter หรือ setter:
1. กำหนดเมื่อเริ่มต้นวัตถุ
2. หลังจากกำหนดวัตถุคำจำกัดความจะถูกเพิ่มผ่านวิธี __defineGetter__ และ __definesetter__ ของวัตถุ
สิ่งเดียวที่ต้องทำเมื่อกำหนดวิธีการ getter และ setter โดยใช้กระบวนการเริ่มต้นวัตถุคือคำนำหน้า "รับ" ในวิธี getter และ "ตั้งค่า" ในวิธีการตั้งค่า
อีกสิ่งที่ควรทราบคือวิธีการ getter ไม่มีพารามิเตอร์และวิธีการตั้งค่าจะต้องมีพารามิเตอร์นั่นคือค่าใหม่ของแอตทริบิวต์ที่จะตั้งค่า
ตัวอย่างเช่น:
การคัดลอกรหัสมีดังนี้:
o = {
ค่า: 9,
รับ b () {return this.value;},
setter (x) {this.value = x;}
-
หลังจากกำหนดวัตถุแล้วให้เพิ่มวิธีการ getter หรือ setter ลงในวัตถุใช้สองวิธีพิเศษ __definegetter__ และ __definesetter__ ฟังก์ชั่นทั้งสองนี้ต้องใช้ชื่อแรกที่จะเป็นชื่อของ getter หรือ setter ที่ให้ไว้ในสตริงและพารามิเตอร์ที่สองเป็นฟังก์ชันเป็น getter หรือ setter
ตัวอย่างเช่นเราเพิ่มแอตทริบิวต์หนึ่งปีในวัตถุวันที่:
การคัดลอกรหัสมีดังนี้:
วันที่.
date.prototype .__ definesetter __ ('ปี', ฟังก์ชั่น (y) {this.setfulelyear (y)});
var now = วันที่ใหม่;
การแจ้งเตือน (ตอนนี้ปี);
ตอนนี้ปี = 2006;
การแจ้งเตือน (ตอนนี้);
สำหรับรูปแบบที่จะนำมาใช้เป็นหลักขึ้นอยู่กับรูปแบบการเขียนโปรแกรมของแต่ละบุคคลรูปแบบแรกมีขนาดกะทัดรัดและง่ายต่อการเข้าใจ แต่ถ้าคุณต้องการเพิ่ม getter หรือ setter หลังจากที่วัตถุถูกกำหนดหรือต้นแบบของวัตถุนี้ไม่ได้เขียนโดยคุณหรืออยู่ในตัวคุณต้องใช้วิธีที่สอง
นี่คือการใช้งานที่เพิ่มแอตทริบิวต์ InnerText ให้กับ Mozilla Browser:
การคัดลอกรหัสมีดังนี้:
htmlelement.prototype .__ definegetter__
-
"innertext", ฟังก์ชัน ()
// กำหนดวิธี getter เพื่อรับค่าของ innerText
// ดังนั้นคุณสามารถอ่านได้เลย!
-
var textrange = this.ownerDocument.createrange ();
// ใช้ช่วงเพื่อดึงเนื้อหาของวัตถุ
Textrange.SelectNodeContents (นี้);
// รับเนื้อหาของโหนดวัตถุเท่านั้น
return textrange.toString ();
// ให้ค่า innerText ค่าของเนื้อหาโหนด
-