ไม่กี่สัปดาห์ที่ผ่านมาฉันโพสต์โพสต์ Weibo โดยบอกว่าฉันชอบฟังก์ชั่นที่ส่งคืนฟังก์ชั่น มีการตอบกลับสองสามครั้งในไม่ช้าโดยทั่วไปทั้งหมด ... อะไรนะ? - สำหรับโปรแกรมเมอร์การทำความเข้าใจฟังก์ชั่นที่ส่งคืนฟังก์ชั่นเป็นทักษะที่สำคัญมาก การใช้มันคุณสามารถบันทึกรหัสจำนวนมากทำให้ JavaScript มีประสิทธิภาพมากขึ้นและช่วยให้คุณเข้าใจพลังของ JavaScript เพิ่มเติม ด้านล่างเป็นตัวอย่างง่ายๆที่ฉันเขียนซึ่งคุณสามารถเข้าใจสิ่งที่ฉันหมายถึง
สมมติว่าคุณมีวัตถุที่มีวัตถุลูกสองตัวและพวกเขาทั้งหมดมีวิธีการรับ สองวิธีนี้คล้ายกันมากและแตกต่างกันเล็กน้อย:
var accessors = {sortable: {get: function () {return typeof this.getAttribute ('cortable')! = 'undefined'; }}, droppable: {get: function () {return typeof this.getAttribute ('droppable')! = 'undefined'; -รหัสซ้ำไม่ใช่ปรากฏการณ์ที่ดีดังนั้นเราจำเป็นต้องสร้างฟังก์ชั่นภายนอกและยอมรับชื่อคุณสมบัติ:
ฟังก์ชั่น getAttribute (attr) {return typeof this.getAttribute (attr)! = 'undefined';} var accessors = {cortable: {get: function () {return getattribute ('cortable'); }}, droppable: {get: function () {return getAttribute ('droppable'); -มันดีกว่ามาก แต่ก็ยังไม่สมบูรณ์แบบเพราะยังมีบางส่วนที่ซ้ำซ้อน วิธีที่ดีกว่าคือปล่อยให้มันส่งคืนฟังก์ชั่นที่คุณต้องการโดยตรงในตอนท้าย - สิ่งนี้จะกำจัดการดำเนินการฟังก์ชั่นซ้ำซ้อน:
ฟังก์ชั่น generateGetMethod (attr) {return function () {return typeof this.getAttribute (attr)! = 'undefined'; };} var accessors = {cortable: {get: generateGetMethod ('cortable')}, droppable: {get: geenateGetMethod ('droppable')}};/ * มันเทียบเท่ากับวิธีดั้งเดิม: */var -accessors ' }}, droppable: {get: function () {return typeof this.getAttribute ('droppable')! = 'undefined'; -สิ่งที่คุณเห็นข้างต้นคือฟังก์ชั่นที่ส่งคืนฟังก์ชัน วัตถุเด็กแต่ละตัวมีวิธีการรับของตัวเอง แต่กระบวนการดำเนินการที่ซ้อนกันไม่จำเป็นต้องถูกลบออก
นี่เป็นเทคนิคที่มีประโยชน์มากที่สามารถช่วยคุณกำจัดการทำซ้ำของรหัสที่คล้ายกัน หากใช้อย่างถูกต้องสามารถทำให้รหัสของคุณอ่านง่ายขึ้นและง่ายต่อการบำรุงรักษา!
คุณเข้าใจไหม