Я ищу, чтобы иметь возможность расширить прототип функции в javascript (то есть добавить функцию ко всем функциям). Цель состоит в том, чтобы преобразовать его в формат для обмена между другим языком (а именно рубином, который может общаться только через строки [в этой конкретной настройке]). У меня уже есть система, так что я могу обойти другие тип путем определения to_js
метода на объектах рубина и метода на яваскрипт объектах to_ruby
, как иРасширение функции prototype
Number.prototype.to_ruby = function() { return this.toString(); }
Это работает для всего остального я хочу, чтобы он, но не для функций. Я может заставить его работать в хроме, выполнив следующие действия:
_empty = function() {};
_empty.__proto__.to_ruby = function() {
return 'JSFunction.new(' + this.toString().to_ruby() + ')';
};
Но это не работает в IE (что является требованием системы).
Я знаю, что у меня есть объект где-то отслеживающий функции с помощью идентификатора или подобного, но я не могу гарантировать, что они будут использоваться с тем же экземпляром, который их создал.
Все остальное неудача я мог бы просто написать функцию частного случая сделку с ним (т.е. isFunction(instance) ? fn_to_ruby(instance) : instance.to_ruby()
, но я предпочел бы сохранить эту модель, если это возможно.
Hah! Я просто смотрю в одно и то же. SketchUp Ruby <-> Мост JavaScript. : D – thomthom