186
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Có thể chuyển chức năng JavaScript với tham số dưới dạng tham số không?
Thí dụ:
$[edit_link].click[ changeViewMode[ myvar ] ];
Bryanh
5.6963 Huy hiệu vàng35 Huy hiệu bạc47 Huy hiệu đồng3 gold badges35 silver badges47 bronze badges
Hỏi ngày 19 tháng 8 năm 2009 lúc 14:13Aug 19, 2009 at 14:13
2
Sử dụng "đóng":
$[edit_link].click[function[]{ return changeViewMode[myvar]; }];
Điều này tạo ra một trình bao bọc chức năng tạm thời ẩn danh biết về tham số và chuyển nó đến triển khai gọi lại thực tế.
Đã trả lời ngày 19 tháng 8 năm 2009 lúc 14:14Aug 19, 2009 at 14:14
Ferdinand Beyerferdinand BeyerFerdinand Beyer
62.6K15 Huy hiệu vàng151 Huy hiệu bạc143 Huy hiệu đồng15 gold badges151 silver badges143 bronze badges
6
Sử dụng Function.prototype.bind[]
. Trích dẫn MDN:
Phương thức
0 tạo ra một hàm mới, khi được gọi, có từ khóa$[edit_link].click[function[]{ return changeViewMode[myvar]; }];
1 được đặt thành giá trị được cung cấp, với một chuỗi các đối số nhất định trước bất kỳ được cung cấp nào khi hàm mới được gọi.$[edit_link].click[function[]{ return changeViewMode[myvar]; }];
0 method creates a new function that, when called, has its$[edit_link].click[function[]{ return changeViewMode[myvar]; }];
1 keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.$[edit_link].click[function[]{ return changeViewMode[myvar]; }];
Nó được hỗ trợ bởi tất cả các trình duyệt chính, bao gồm IE9+.
Mã của bạn sẽ trông như thế này:
$[edit_link].click[changeViewMode.bind[null, myvar]];
Lưu ý bên cạnh: Tôi giả sử bạn đang ở trong bối cảnh toàn cầu, tức là biến
$[edit_link].click[function[]{ return changeViewMode[myvar]; }];
1 là $[edit_link].click[function[]{ return changeViewMode[myvar]; }];
3; Nếu không, sử dụng $[edit_link].click[function[]{ return changeViewMode[myvar]; }];
1 thay vì $[edit_link].click[function[]{ return changeViewMode[myvar]; }];
5.Đã trả lời ngày 2 tháng 1 năm 2016 lúc 14:33Jan 2, 2016 at 14:33
4
Không, nhưng bạn có thể truyền một cái mà không có tham số và làm điều này:
$[edit_link].click[
function[] { changeViewMode[myvar]; }
];
Vì vậy, bạn đang chuyển một hàm ẩn danh không có tham số, sau đó chức năng đó gọi hàm được tham số hóa của bạn với biến trong phần đóng
Đã trả lời ngày 19 tháng 8 năm 2009 lúc 14:15Aug 19, 2009 at 14:15
ClydeclydeClyde
7.98910 Huy hiệu vàng55 Huy hiệu bạc86 Huy hiệu đồng10 gold badges55 silver badges86 bronze badges
0
Hoặc nếu bạn đang sử dụng ES6, bạn sẽ có thể sử dụng chức năng mũi tên
$[edit_link].click[[] => changeViewMode[myvar]];
Đã trả lời ngày 13 tháng 2 năm 2018 lúc 2:12Feb 13, 2018 at 2:12
Vâng, như thế này:
$[edit_link].click[function[] { changeViewMode[myvar] }];
Đã trả lời ngày 19 tháng 8 năm 2009 lúc 14:15Aug 19, 2009 at 14:15
ClydeclydePhilippe Leybaert
7.98910 Huy hiệu vàng55 Huy hiệu bạc86 Huy hiệu đồng31 gold badges210 silver badges222 bronze badges
Hoặc nếu bạn đang sử dụng ES6, bạn sẽ có thể sử dụng chức năng mũi tên
var message = 'Hello World';
var callback = function[]{
alert[this]
}.bind[message];
Đã trả lời ngày 13 tháng 2 năm 2018 lúc 2:12
function activate[callback]{
callback && callback[];
}
activate[callback];
Vâng, như thế này:
Philippe Leybaertphilippe Leybaert
165K31 Huy hiệu vàng210 Huy hiệu bạc222 Huy hiệu đồngAug 24, 2016 at 14:17
Bạn có thể làm được việc này
function function1[]
{
function2[function [] { function3["parameter value"]; }];
}
function function2[functionToBindOnClick]
{
$[".myButton"].click[functionToBindOnClick];
}
function function3[message] { alert[message]; }
và sau đó
Hoặc nếu cuộc gọi lại của bạn chứa logic linh hoạt hơn, bạn có thể vượt qua đối tượng.Sep 7, 2016 at 14:32
Thử nghiệmerionpc
Đã trả lời ngày 24 tháng 8 năm 2016 lúc 14:171 silver badge14 bronze badges