EDIT: OK, tôi tin rằng các giải pháp sau là hợp lệ:chức năng Javascript móc
Sử dụng các plugin jQuery AOP. Về cơ bản nó kết thúc tốt chức năng cũ cùng với móc vào một bánh sandwich chức năng và gán lại nó cho tên hàm cũ. Điều này gây ra các hàm lồng nhau với mỗi móc mới được thêm vào.
Nếu jQuery không thể sử dụng được cho bạn, chỉ cần cướp bóc mã nguồn, có vẻ như không có bất kỳ phụ thuộc jQuery nào trong plugin và nguồn đơn giản và rất nhỏ.Có một đối tượng mô tả tất cả các móc và mục tiêu của chúng và một để lưu trữ hàm chưa sửa đổi ban đầu. Khi thêm một móc mới, gói sẽ được làm lại xung quanh chức năng ban đầu, thay vì quấn lại chức năng gói trước đó.
Bạn thoát khỏi các hàm lồng nhau và thay vào đó, hãy xử lý hai đối tượng. Có khả năng, điều này cũng có thể có nghĩa là xử lý móc dễ dàng hơn, nếu bạn thêm/tháo móc thường xuyên và không hoạt động.
Tôi sẽ đi đầu tiên, vì nó đã được thực hiện và tôi không có hiệu suất phải lo lắng. Và kể từ khi các chức năng ban đầu không bị ảnh hưởng, ngay cả khi tôi chuyển đổi phương pháp hooking, tôi sẽ chỉ cần làm lại móc thêm, mà có thể chỉ là một số tìm kiếm đơn giản & thay thế hoạt động.
Hi,
Có thể tạo ra một cơ chế, trong đó có chức năng A có thể có một bộ móc (chức năng mà sẽ thực hiện trước/sau chức năng A)?
Lý tưởng nhất, hàm A sẽ không biết chức năng hooking, do đó tôi không phải sửa đổi mã nguồn của hàm A để gọi móc. Một cái gì đó như:
A = function(){
alert("I'm a naive function");
};
B = function(){
alert("I'm having a piggyback ride on function A!"+
"And the fool doesn't even know it!");
};
addHook(B, A)//add hook B to function A
A()
//getting alerts "I'm a naive function"/"I'm having a
//piggyback ride on function A! And the fool doesn't even know it!"
Tôi đã cố gắng để hack cái gì đó trong một vài giờ, nhưng cho đến nay không có may mắn.
đây là một câu hỏi tốt đẹp, mặc dù tôi nghi ngờ sẽ có một câu trả lời tích cực. Bạn chắc chắn có thể làm điều đó nhưng với một số loại workaround. Tôi đang đánh dấu trang này. –