ใน Javascript ฉันจะผูกอาร์กิวเมนต์กับฟังก์ชันโดยไม่ผูกthisพารามิเตอร์ได้อย่างไร
ตัวอย่างเช่น:
//Example function.
var c = function(a, b, c, callback) {};
//Bind values 1, 2, and 3 to a, b, and c, leave callback unbound.
var b = c.bind(null, 1, 2, 3); //How can I do this without binding scope?
ฉันจะหลีกเลี่ยงผลข้างเคียงของการผูกขอบเขตของฟังก์ชัน (เช่นการตั้งค่าthis= null) ด้วยได้อย่างไร
แก้ไข:
ขอโทษสำหรับความสับสน. ฉันต้องการผูกอาร์กิวเมนต์จากนั้นสามารถเรียกใช้ฟังก์ชันที่ถูกผูกไว้ในภายหลังและทำให้มันทำงานเหมือนกับว่าฉันเรียกฟังก์ชันดั้งเดิมและส่งผ่านอาร์กิวเมนต์ที่ถูกผูกไว้:
var x = 'outside object';
var obj = {
x: 'inside object',
c: function(a, b, c, callback) {
console.log(this.x);
}
};
var b = obj.c.bind(null, 1, 2, 3);
//These should both have exact same output.
obj.c(1, 2, 3, function(){});
b(function(){});
//The following works, but I was hoping there was a better way:
var b = obj.c.bind(obj, 1, 2, 3); //Anyway to make it work without typing obj twice?
ฉันยังใหม่สำหรับเรื่องนี้ขออภัยในความสับสน
ขอบคุณ!
bind()เป็นnull? ดูเหมือนจะทำงานได้ดีใน FF
thisยกเลิกการผูกมัดใน JavaScript ได้อย่างสมบูรณ์ มันก็จะหมายถึงบางสิ่งบางอย่าง ดังนั้นการผูกthisกับthisฟังก์ชันการปิดล้อมจึงสมเหตุสมผลมาก
thisหรือไม่?var b = c.bind(this, 1,2,3);