การปิด JavaScript เป็นสิ่งที่น่าสนใจมาก หลังจากอ่านข้อมูลที่เกี่ยวข้อง //www.vevb.com/article/29472.htm สิ่งที่น่าประทับใจที่สุดเกี่ยวกับเรื่องนี้คือ: มันตระหนักถึงสาธารณะและส่วนตัว
ไวยากรณ์ที่ง่ายที่สุดในการสร้างการปิดที่ไม่ระบุชื่อคือ:
การคัดลอกรหัสมีดังนี้:
var obj = (ฟังก์ชัน () {// รหัสต่าง ๆ });
ตัวอย่างคลาสสิกที่สุดของการปิด:
การคัดลอกรหัสมีดังนี้:
var makeCounter = (function () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
-
คืนสิ่งนี้;
-
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
var obj1 = makecounter ();
obj1.test (); // 1
obj1.test (); // 2
ส่วนตัวและสาธารณะ:
การคัดลอกรหัสมีดังนี้:
var makeCounter = (function () {
var i = 1;
// นี่คือส่วนตัว
ฟังก์ชั่นบันทึก () {
console.log (i);
i ++;
-
// ผู้ชายคนนี้เป็นสาธารณะ
this.test () {
บันทึก();
-
คืนสิ่งนี้;
-
var obj = makeCounter ();
obj.test (); // 1
obj.test (); // 2
obj.log (); // ไม่ได้กำหนด
ฟังก์ชั่นที่กำลังดำเนินการด้วยตนเอง:
ครั้งแรกที่ฉันเห็นรหัสดังกล่าวฉันรู้สึกว่า: ขั้นสูงมาก;
การคัดลอกรหัสมีดังนี้:
var obj = (ฟังก์ชั่น (หน้าต่าง) {
// รหัสที่หลากหลาย
}(หน้าต่าง));
จากนั้นฉันไปที่ Google และพบว่าพวกเขามักจะเขียนแบบนี้:
การคัดลอกรหัสมีดังนี้:
var obj = (ฟังก์ชัน () {
var i = 1;
this.test = function () {
console.log (i);
i ++;
-
คืนสิ่งนี้;
-
obj.test (); // 1
obj.test (); // 2
ความเข้าใจที่ง่ายที่สุดคือโปรแกรมเมอร์ขี้เกียจและเขียนสองขั้นตอนในขั้นตอนเดียว
การคัดลอกรหัสมีดังนี้:
// นี่คือฟังก์ชั่น ควรใช้ obj () เช่นนี้
var makeCounter = function () {
// รหัสที่หลากหลาย
-
// นี่คือวัตถุ มันคล้ายกับ var obj = makeCounter ();
var obj = (ฟังก์ชัน () {
// รหัสที่หลากหลาย
-
นอกจากนี้ยังสามารถมีพารามิเตอร์:
การคัดลอกรหัสมีดังนี้:
var output = "การทดสอบใหม่";
var obj = (ฟังก์ชัน (msg) {
this.test = function () {
console.log (ผงชูรส);
-
คืนสิ่งนี้;
} (เอาต์พุต));
obj.test ();
นอกจากนี้ยังสามารถซับซ้อนและก้าวหน้าได้มากขึ้น:
การคัดลอกรหัสมีดังนี้:
var output = "การทดสอบใหม่";
var obj = (ฟังก์ชั่น (obj, msg) {
// ผู้ชายคนนี้เป็นส่วนตัวเช่นกัน คล้ายกับ obj.i (! = obj.i) แต่ไม่ใช่ obj.i (เพราะมันไม่สามารถเข้าถึงได้ภายนอก)
var i = 1;
//ส่วนตัว
ฟังก์ชั่นบันทึก () {
console.log (i + ":" + msg);
i ++;
-
//สาธารณะ
obj.test = function () {
บันทึก();
-
คืน OBJ;
} (OBJ, เอาต์พุต));
obj.test (); // 1: การทดสอบใหม่
obj.i = 100;
// ฉันไม่ได้เปลี่ยนแปลง
obj.test (); // 2: การทดสอบใหม่
ครั้งแรกที่เราพบกันเราทิ้งความประทับใจอย่างลึกซึ้ง การใช้การปิดตระหนักถึงการบำรุงรักษาสถานะและคุณลักษณะ หลีกเลี่ยงการบินของตัวแปรทั่วโลกบนหน้าจอ สิ้นสุดสถานการณ์ที่น่าอับอายที่ตัวแปรถูกกำหนดใหม่และกำหนดใหม่เสมอ นอกจากนี้ยังสามารถแบ่งส่วนวัตถุออกเป็นไฟล์ JS หลายไฟล์ มันยอดเยี่ยมจริงๆ
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ฉันหวังว่าคุณจะชอบ