การปิด JavaScript เป็นคุณสมบัติของการพัฒนาที่ใช้งานอยู่และการพัฒนาแบบพาสซีฟ กล่าวคือในอีกด้านหนึ่ง JS ได้ปิดเพื่อแก้ปัญหาบางอย่างได้ดีขึ้น ในทางกลับกันเพื่อแก้ปัญหาบางอย่าง JS ต้องใช้การปิดเพื่อแก้ปัญหาแทบจะไม่
อดีตไม่ได้กล่าวถึงที่นี่ หากการปิด JS สามารถแก้ปัญหาได้ดีกว่าการใช้การปิดจะดีกว่า
สิ่งที่ฉันกำลังพูดถึงคือสิ่งหลังเพราะข้อ จำกัด ของ JS เองและปัญหาที่ต้องแก้ไขด้วยการปิดเช่นข้อกำหนดของ "ตัวแปรจะเริ่มต้นเพียงครั้งเดียว"
ภาษาทั่วไปแก้ปัญหานี้:
การคัดลอกรหัสมีดังนี้:
คลาสคลาส {
ฟังก์ชัน init () {
this.n = 0;
-
ฟังก์ชั่น func () {
this.n ++;
คืนสิ่งนี้
-
-
var obj = คลาสใหม่ ();
โดยทั่วไปแล้ว JavaScript ได้รับการแก้ไขด้วยวิธีนี้ (โดยใช้การปิด):
การคัดลอกรหัสมีดังนี้:
var obj = {
func: (function () {
var n = 0;
return function () {
n ++;
กลับ n;
-
-
-
แต่ฉันอยากจะแนะนำวิธีนี้ (กำจัดการปิด):
การคัดลอกรหัสมีดังนี้:
ฟังก์ชันคลาส () {
var self = this;
self.n = 0;
self.func = function () {
self.n ++;
กลับมาเอง
-
-
var obj = คลาสใหม่ ();
เพราะหลังปรับขนาดได้มากขึ้น เมื่อคุณต้องการใช้การดำเนินการที่แตกต่างกันในตัวแปรหลังสามารถกำหนดฟังก์ชั่นที่แตกต่างกัน (นั่นคือการขยายเชิงเส้นแบบง่าย ๆ ) ในขณะที่อดีต (ปิด) จะต้องเขียนใหม่อย่างสมบูรณ์ (นี่คือเหตุผลที่คุณมักจะได้ยินคำว่า refactoring)