Trong Javascript, làm cách nào để tôi có thể liên kết các đối số với một hàm mà không ràng buộc thistham số?
Ví dụ:
//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?
Làm cách nào để tránh tác dụng phụ của việc phải ràng buộc cả phạm vi của hàm (ví dụ: setting this= null)?
Biên tập:
Xin lỗi vì sự nhầm lẫn. Tôi muốn ràng buộc các đối số, sau đó có thể gọi hàm bị ràng buộc sau đó và nó hoạt động chính xác như thể tôi đã gọi hàm ban đầu và chuyển cho nó các đối số bị ràng buộc:
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?
Tôi vẫn còn mới về điều này, xin lỗi vì sự nhầm lẫn.
Cảm ơn!
bind()là be null? Có vẻ hoạt động tốt trong FF.
thishoàn toàn không bị ràng buộc trong JavaScript. Nó luôn luôn có nghĩa là một cái gì đó . Vì vậy, liên kết thisvới thishàm bao quanh có rất nhiều ý nghĩa.
this?var b = c.bind(this, 1,2,3);