Có các phím tắt được tạo sẵn (đường cú pháp) để trình bao bọc hàm @CMS trả lời. (Dưới đây giả sử rằng bối cảnh bạn muốn là this.tip
.)
Nếu bạn nhắm mục tiêu trình duyệt tương thích với ECMA-262, phiên bản thứ 5 (ECMAScript 5) hoặc Node.js , bạn có thể sử dụng Function.prototype.bind
. Bạn có thể tùy ý chuyển bất kỳ đối số chức năng để tạo các chức năng một phần .
fun.bind(thisArg[, arg1[, arg2[, ...]]])
Một lần nữa, trong trường hợp của bạn, hãy thử điều này:
if (this.options.destroyOnHide) {
setTimeout(this.tip.destroy.bind(this.tip), 1000);
}
Chức năng tương tự cũng đã được triển khai trong Prototype (bất kỳ thư viện nào khác?).
Function.prototype.bind
có thể được thực hiện như thế này nếu bạn muốn tương thích ngược tùy chỉnh (nhưng vui lòng quan sát các ghi chú).
Để phát triển tiên tiến (2015), bạn có thể sử dụng các hàm mũi tên béo , là một phần của đặc tả ECMAScript 2015 (Harmony / ES6 / ES2015) ( ví dụ ).
Một biểu thức hàm mũi tên (còn được gọi là hàm mũi tên béo ) có cú pháp ngắn hơn so với biểu thức hàm và liên kết từ vựng với this
giá trị [...].
(param1, param2, ...rest) => { statements }
Trong trường hợp của bạn, hãy thử điều này:
if (this.options.destroyOnHide) {
setTimeout(() => { this.tip.destroy(); }, 1000);
}
Nếu bạn đã sử dụng jQuery 1.4+, có một hàm được tạo sẵn để đặt rõ ràng this
bối cảnh của một hàm.
jQuery.proxy () : Thực hiện một hàm và trả về một hàm mới sẽ luôn có một bối cảnh cụ thể.
$.proxy(function, context[, additionalArguments])
Trong trường hợp của bạn, hãy thử điều này:
if (this.options.destroyOnHide) {
setTimeout($.proxy(this.tip.destroy, this.tip), 1000);
}
Nó có sẵn trong Underscore.js, cũng như lodash, như _.bind(...)
1 , 2
liên kết Bind một hàm với một đối tượng, nghĩa là bất cứ khi nào hàm được gọi, giá trị củathis
sẽ là đối tượng. Tùy chọn, liên kết các đối số với hàm để điền trước chúng, còn được gọi là ứng dụng một phần.
_.bind(function, object, [*arguments])
Trong trường hợp của bạn, hãy thử điều này:
if (this.options.destroyOnHide) {
setTimeout(_.bind(this.tip.destroy, this.tip), 1000);
}
trói buộc jquery gạch dưới bản thảo-5 nguyên mẫu node.js