Tôi đang tìm cách có thể mở rộng nguyên mẫu hàm trong javascript (có nghĩa là, thêm một hàm vào tất cả các hàm). Mục đích là chuyển đổi nó thành một định dạng để trao đổi giữa một ngôn ngữ khác (cụ thể là ruby, chỉ có thể giao tiếp thông qua các chuỗi [trong cài đặt cụ thể này]). Tôi đã có một hệ thống để tôi có thể vượt qua xung quanh loại khác bằng cách định nghĩa một phương pháp to_js
trên các đối tượng ruby và một phương pháp to_ruby
trên các đối tượng javascript, như vậyMở rộng mẫu thử nghiệm
Number.prototype.to_ruby = function() { return this.toString(); }
này đang làm việc cho tất cả mọi thứ khác tôi muốn nó, nhưng không phải cho các chức năng. Tôi thể cho nó hoạt động trong chrome bằng cách làm như sau:
_empty = function() {};
_empty.__proto__.to_ruby = function() {
return 'JSFunction.new(' + this.toString().to_ruby() + ')';
};
Nhưng điều này không làm việc trong IE (đó là một yêu cầu của hệ thống).
Tôi biết tôi có một đối tượng ở đâu đó để theo dõi các chức năng bằng ID hoặc tương tự, nhưng tôi không thể đảm bảo rằng chúng sẽ được sử dụng với cùng một cá thể tạo ra chúng.
Tất cả các khác thất bại tôi chỉ có thể viết một hàm để đặc biệt thỏa thuận hợp với nó (ví dụ, isFunction(instance) ? fn_to_ruby(instance) : instance.to_ruby()
, nhưng tôi thà giữ mô hình này nếu có thể.
Hah! Tôi chỉ tình cờ nhìn vào cùng một thứ. SketchUp Ruby <-> Cầu JavaScript. : D – thomthom