ผู้ตั้งค่าและ getters ในจาวาสคริปต์เป็นวิธีที่น้อยกว่าในเวลาปกติ พวกเขาไม่ใช่วิธีมาตรฐานตัวเองและได้รับการสนับสนุนเฉพาะในเบราว์เซอร์ที่ไม่ใช่ II (อาจมีวิธีอื่น ๆ ที่สามารถทำได้โดยเคอร์เนล IE เท่านั้นฉันไม่รู้วิธีแก้ปัญหาในขณะนี้) แต่การใช้พวกเขาสามารถทำสิ่งต่าง ๆ ได้หลายอย่างเช่น:
1. ข้อ จำกัด ในการเข้าถึงข้อมูล:
A.Value เป็นวิธีการเรียกใช้วิธีการเรียกไปยังตัวแปรค่า หากข้อยกเว้นถูกโยนลงไปในการใช้งาน Method Method การเข้าถึงตัวแปรค่าสามารถถูกบล็อกได้
2. ฟังตัวแปร DOM:
Window.Name เป็นแอตทริบิวต์ DOM ที่มีประโยชน์มากในโดเมน (ที่รู้จักกันในรายละเอียดดูรายละเอียด Baidu) หากคุณแทนที่การใช้งาน setter ของ window.name คุณสามารถตระหนักถึงการสื่อสารหน่วยความจำแบบอะซิงโครนัสผ่านหน้าเว็บ
3. ใช้จินตนาการของคุณและสามารถทำสิ่งต่างๆมากมาย
ทั้งหมดต่อไปนี้จะถูกถ่ายโอน:
ก่อนอื่นลองมาดูกันอย่างรวดเร็วว่า Getters และ Setters คืออะไรและทำไมพวกเขาถึงมีประโยชน์ จากนั้นมาดูกันว่าแพลตฟอร์มใดที่รองรับ GetTets และ Setters
getters และ setters
Getters และ Setters ช่วยให้คุณสามารถรับหรือตั้งค่าข้อมูลของวัตถุได้อย่างรวดเร็ว โดยทั่วไปวัตถุมีสองวิธีซึ่งใช้ในการรับและตั้งค่าที่แน่นอนเช่น:
{getValue: function () {return this._value;}, setValue: function (val) {this._value = val;}}ประโยชน์อย่างหนึ่งที่ชัดเจนในการเขียน JavaScript ด้วยวิธีนี้คือคุณสามารถใช้มันเพื่อซ่อนคุณลักษณะที่คุณไม่ต้องการเข้าถึงโดยตรงจากโลกภายนอก รหัสสุดท้ายมีลักษณะเช่นนี้ (บันทึกค่าของวัตถุที่ยื่นใหม่ที่สร้างขึ้นใหม่ด้วยการปิด):
ฟิลด์ฟังก์ชั่น (val) {var value = val; this.getValue = function () {ค่าคืน;}; this.setValue = function (val) {value = val;};}ดังนั้นเราจึงสามารถใช้มันได้เช่นนี้:
var field = ฟิลด์ใหม่ ("test"); field.value // => undefinedfield.setValue ("test2") field.getValue () // => "test2"ลองจำลองแอตทริบิวต์ "ค่าที่ซ่อนอยู่" ในตัวอย่างด้านบนและรหัสของเราจะเป็นแบบนี้:
ฟิลด์ฟังก์ชั่น (val) {var value = val; this .__ defineGetter __ ("value", function () {ค่าส่งคืน;}); this .__ definesetter __ ("value", ฟังก์ชัน (val) {value = val;});};อย่างไรก็ตามคุณไม่ชอบเขียนด้วยวิธีนี้และมีแนวโน้มที่จะกำหนด getters และ setters ในต้นแบบของวัตถุ (ไม่สำคัญว่าจะเขียนตัวแปรส่วนตัว) เราสามารถใช้ไวยากรณ์อื่นได้
ฟิลด์ฟังก์ชัน (val) {this.value = val;} field.prototype = {รับค่า () {return this._value;}, ค่าตั้งค่า (val) {this._value = val;}};ไวยากรณ์นี้ดูเหลือเชื่อ แต่หลังจากใช้งานมาระยะหนึ่งแล้วมันก็ง่ายที่จะยอมรับมัน
ถัดไปเป็นอีกตัวอย่างหนึ่งซึ่งช่วยให้โลกภายนอกได้รับอาร์เรย์ของชื่อผู้ใช้ แต่ไม่สามารถรับวัตถุผู้ใช้ที่ซ่อนอยู่เดิมได้
ไซต์ฟังก์ชั่น (ผู้ใช้) {. this .__ defineGetter __ ("ผู้ใช้", function () {// js 1.6 Array Map () return users.map (ฟังก์ชั่น (ผู้ใช้) {return user.name;});};};จำประเด็นต่อไปนี้:
ภายในวัตถุแต่ละตัวแปรสามารถมีเพียงหนึ่ง getter หรือ setter (ดังนั้นค่าสามารถมี getter และ setter แต่ค่าไม่เคยมีสอง getters)
วิธีเดียวที่จะลบ getter หรือ setter คือ: ลบวัตถุ [ชื่อ] การลบสามารถลบคุณสมบัติทั่วไปบางส่วน getters และ setters
หากคุณใช้ __defineGetter__ หรือ __definesetter__ มันจะแทนที่ getter หรือ setter ของชื่อเดียวกันที่กำหนดไว้ก่อนหน้านี้หรือแม้กระทั่งคุณสมบัติ (คุณสมบัติ)
แพลตฟอร์ม
เบราว์เซอร์ที่รองรับคือ:
Firefox
Safari 3+
โอเปร่า 9.5
ข้างต้นเป็นคำอธิบายแบบเต็มของวิธีการตั้งค่าและ getter ที่แนะนำใน JavaScript ว่าบรรณาธิการได้แนะนำให้คุณรู้จัก ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณต้องการทราบข้อมูลเพิ่มเติมโปรดใส่ใจกับ wulin.com