เพื่อนร่วมงานของฉันใช้ "ฟังก์ชันใหม่ ()" ด้วยตัวพิมพ์เล็ก "f" เพื่อกำหนดวัตถุใหม่ใน JavaScript ดูเหมือนว่าจะทำงานได้ดีในเบราว์เซอร์หลัก ๆ ทั้งหมดและดูเหมือนว่าจะมีประสิทธิภาพพอสมควรในการซ่อนตัวแปรส่วนตัว นี่คือตัวอย่าง:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
ทันทีที่ใช้ "this" จะกลายเป็นสมบัติสาธารณะของ someObj ดังนั้น someObj.foo, someObj.get_inner () และ someObj.set_inner () จึงมีให้บริการแบบสาธารณะ นอกจากนี้ set_inner () และ get_inner () เป็นวิธีการที่ได้รับสิทธิพิเศษดังนั้นจึงสามารถเข้าถึง "inner" ได้โดยการปิด
อย่างไรก็ตามฉันไม่เห็นการอ้างอิงถึงเทคนิคนี้ที่ใดเลย แม้แต่ JSLint ของ Douglas Crockford ก็บ่นเกี่ยวกับเรื่องนี้:
- การก่อสร้างแปลก ๆ ลบ "ใหม่"
เรากำลังใช้เทคนิคนี้ในการผลิตและดูเหมือนว่าจะทำงานได้ดี แต่ฉันค่อนข้างกังวลเกี่ยวกับเรื่องนี้เพราะไม่ได้บันทึกไว้ที่ใด ไม่มีใครรู้ว่านี่เป็นเทคนิคที่ถูกต้องหรือไม่?
this
จะอ้างถึงองค์ประกอบที่ทำให้เหตุการณ์เริ่มต้นขึ้นไม่ใช่วัตถุของคุณ แต่คุณสามารถมีได้var instance = this
แทน