สองวิธีได้รับการสนับสนุนในอาร์เรย์ js shift () และ pop () ซึ่งอ้างถึงการลบค่าจากด้านหน้าและด้านสุดท้ายของข้อมูลและส่งคืนค่าที่ถูกลบ คุณจะเข้าใจโดยดูตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
var arr = ['s', 'o', 'f', 'i', 's', 's', 'h'];
arr.shift (); // return 's'
arr; // ปัจจุบัน ['o', 'f', 'i', 's', 'h']
arr.pop () // return 'h'
arr // ปัจจุบัน ['o', 'f', 'i', 's']
เป็นเรื่องธรรมดามากในกรอบ JS หลายอันที่วิธีการให้คุณผ่านพารามิเตอร์หลายตัวและพารามิเตอร์เหล่านี้บางส่วนสามารถละเว้นได้ จุดเล็กน้อยเหล่านี้อาจเป็นครั้งแรกหรือครั้งสุดท้าย วิธีการเขียนแบบดั้งเดิมคือการพิจารณาว่าพารามิเตอร์มีอยู่หรือจำนวนพารามิเตอร์เพื่อกำหนดค่าสุดท้าย
ที่นี่เราสามารถใช้วัตถุอาร์กิวเมนต์ของฟังก์ชั่นเช่นเดียวกับการเปลี่ยนแปลงและป๊อปในอาร์เรย์เพื่อให้ได้แอปพลิเคชันที่ยืดหยุ่น
1. ใช้กะ
วิธีการใช้วิธีการ. bind () ให้ FN API มีดังนี้:
การคัดลอกรหัสมีดังนี้:
// ขอบเขตของ FN จำกัด เฉพาะวัตถุ
// ยกเว้นวัตถุพารามิเตอร์ทั้งหมดของวิธีการผูกจะถูกส่งผ่านไปยัง FN
fn.bind (วัตถุ, param1, param2, [, paramn]);
ดูตัวอย่างก่อน แน่นอนตัวอย่างนี้อาจมีความสำคัญต่อการใช้การโทรและสมัคร อย่างไรก็ตามสิ่งที่เราต้องการพูดคุยคือแอปพลิเคชันของการเปลี่ยนแปลง:
การคัดลอกรหัสมีดังนี้:
// [`.bind`] (http://www.prototypejs.org/api/function/bind) วิธีการจาก prototype.js
function.prototype.bind = function () {
var fn = สิ่งนี้
args = array.prototype.slice.call (อาร์กิวเมนต์)
Object = args.shift ();
return function () {
ส่งคืน fn.apply (วัตถุ
args.concat (array.prototype.slice.call (อาร์กิวเมนต์)));
-
-
เราสามารถใช้การเปลี่ยนแปลงไปยังวัตถุอาร์กิวเมนต์ (วัตถุคล้ายอาร์เรย์ซึ่งจะต้องแปลงเป็นอาร์เรย์จริง) เพื่อนำออกมา ตัวอย่างเช่นวิธีนี้ส่วนใหญ่ใช้พวกเขาเพื่อแยกวัตถุเป็นขอบเขตและจากนั้นผ่านอาร์เรย์พารามิเตอร์ที่เหลือไปยัง FN อย่างชาญฉลาดนั่นคือเรียกใช้ฟังก์ชันที่เราต้องการ จำกัด ขอบเขตวัตถุ
2. ใช้ป๊อป
เมื่อเร็ว ๆ นี้เรากำลังลอง SEAJS ลองใช้หนึ่งใน API ของมันเป็นตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
กำหนด (id, การพึ่งพา, การโทรกลับ)
สิ่งนี้กำหนด API, ID และการพึ่งพาของโมดูลสามารถละเว้นได้ ที่นี่จะใช้การสนับสนุนนี้ได้อย่างไร? หากคุณใช้ถ้าจะตัดสินคุณต้องการจริง ๆ ถ้า (อาร์กิวเมนต์ === 1) {... } elseif ... จำนวนมาก แน่นอนว่าบางครั้งมีประโยชน์ (คิดเกี่ยวกับมัน) ที่นี่เราอาจใช้ POP เพื่ออำนวยความสะดวกในการดำเนินการสนับสนุนดังกล่าว:
การคัดลอกรหัสมีดังนี้:
var define = function () {
// ใช้การโทรกลับนี้
var args = [] .slice.call (อาร์กิวเมนต์)
fn = args.pop ();
// ทำสิ่งมหัศจรรย์อื่น ๆ
fn.apply (null, args)
-
-
callback = function () {
var args = อาร์กิวเมนต์, i = 0, len = args.length;
ถ้า (len === 0) console.log ('การโทรกลับเพียงครั้งเดียว);
สำหรับ (; i <len; i ++) {
console.log (args [i]);
-
-
// ตรวจสอบผลการดำเนินการของพวกเขาทั้งสาม
กำหนด (โทรกลับ);
กำหนด ('มีสองพารามิเตอร์', การโทรกลับ);
กำหนด ('มีสามพารามิเตอร์', 'Hello World', โทรกลับ);
สองวันที่ผ่านมาฉันเคยอ้างบางสิ่งบางอย่างเมื่อฉันใช้เทคนิคบางอย่างใน JS แม้ว่าฉันมักจะถามตัวเองว่าอย่าแช่อยู่ในรหัสมากเกินไปรหัสไม่ใช่แค่ JS แต่ให้ความสนุกกับเรามากเกินไป จะไม่ชอบมันได้อย่างไร ฮ่า.