คำจำกัดความ: กำหนดชุดของอัลกอริทึมห่อหุ้มพวกเขาทีละคนในฟังก์ชั่นหรือพวกเขาสามารถห่อหุ้มอย่างสม่ำเสมอลงในวัตถุเป็นคุณลักษณะแล้วกำหนดวิธีการ วิธีนี้สามารถเลือกและดำเนินการอัลกอริทึมที่เกี่ยวข้องโดยอัตโนมัติตามพารามิเตอร์
โดยทั่วไปจะใช้เมื่อมีตัวเลือกมากมายให้เลือกเมื่อใช้ฟังก์ชั่น
ตัวอย่างที่ 1: คำนวณโบนัสสิ้นปีตามเงินเดือนพนักงานเกรดประสิทธิภาพ S, A, B และ C.
// วัตถุนโยบายที่ห่อหุ้มอัลกอริทึมทั้งหมดกลยุทธ์ var = {'s': ฟังก์ชั่น (เงินเดือน) {คืนเงินเดือน*4; }, 'a': ฟังก์ชั่น (เงินเดือน) {คืนเงินเดือน*3; }, 'B': ฟังก์ชั่น (เงินเดือน) {คืนเงินเดือน*2; }, 'C': ฟังก์ชั่น (เงินเดือน) {คืนเงินเดือน*1; }} // กำหนดวิธีการเลือกอัลกอริทึมอัตโนมัติ var calculatebonus = ฟังก์ชั่น (ระดับ, เงินเดือน) {กลยุทธ์การส่งคืน [ระดับ] (เงินเดือน);} // ใช้ calculatebonus ('s', 9000); // 36000CalculateBonus ('B', 5000); // 10,000ตัวอย่างที่ 2: การตรวจสอบแบบฟอร์ม
// วัตถุนโยบายที่กำหนดอัลกอริทึมการตรวจสอบ VAR กลยุทธ์ = function () {isEmpty: ฟังก์ชัน (ค่า, errormsg) {ถ้า (value = '') {return errormsg; }} อเนกประสงค์: ฟังก์ชั่น (ค่า, ขั้นต่ำ, สูงสุด, errormsg) {ถ้า (value.length> max || value.length <นาที) {return errormsg; }} issame: function (oldValue, newValue, errormsg) {ถ้า (newValue! == oldValue) {return errormsg; }} ismobile: ฟังก์ชัน (ค่า, errormsg) {ถ้า (!/(^1 [3 | 5 | 8] [0-9] {9} $)/. ทดสอบ (ค่า)) {return errormsg; -คุณยังไม่สามารถกำหนดคลาสการตรวจสอบความถูกต้องต่อไปนี้และเรียกใช้วิธีการใช้งานของวัตถุกลยุทธ์โดยตรงเมื่อการสูญเสียเหตุการณ์โฟกัสถูกทริกเกอร์เพื่อตรวจสอบรายการอินพุตปัจจุบัน
// define validatorVar validator = function () {this.cache = [];} quidator.prototype.add = ฟังก์ชั่น (elem, กฎ) {var self = this; สำหรับ (var i = 0, กฎ; กฎ = กฎ [i ++]) {(ฟังก์ชั่น (กฎ) {var strategyary = rule.strategy.split (':'); var errormsg = rule.errormsg; self.cache.push (ฟังก์ชั่น () {กลยุทธ์ var = กลยุทธ์ กลยุทธ์ [กลยุทธ์]. Apply (Elem, Strategy); if (errormsg) {return errormsg; -ใช้:
var validator = new validator (); validator.add (elem.username, [{กลยุทธ์: 'isempty', errormsg: 'ชื่อผู้ใช้ไม่สามารถว่างเปล่า'}, {กลยุทธ์: 'อเนกประสงค์: 6: 12', errormsg:ไฟล์แนบ: วัตถุการกำหนดค่าพารามิเตอร์
หากมีฟังก์ชั่น foo (a, b, c, d, e, f ... ) มันมีพารามิเตอร์มากมายฟังก์ชั่นดังกล่าวใช้งานยากและพารามิเตอร์ยากที่จะจดจำ! วิธีที่ดีกว่าคือการใช้วัตถุเพื่อมีพารามิเตอร์เหล่านี้จากนั้นส่งผ่านวัตถุไปยังฟังก์ชันจากนั้นประมวลผลคุณสมบัติของวัตถุ
var prop = {a: 55, b: 'ss', c: function () {... } d: {x: 1, y: 2} ... } foo (prop);ด้วยวิธีนี้ไม่จำเป็นต้องจำลำดับพารามิเตอร์เมื่อใช้ฟังก์ชั่น เพียงจำชื่อแอตทริบิวต์หลายชื่อของวัตถุพารามิเตอร์ซึ่งไม่ใช่เรื่องง่ายที่จะทำผิดพลาด
ข้อมูลอ้างอิง: "JavaScript Pattern" "JavaScript Design Pattern and Development Practice"
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น