Определение методов для базовых классов внутри песочницы в JavaScript
Опубликовано TermiT Янв 22, 2010 в JavaScript |
Джон-Дэвид Дэлтон выпустил Fusebox, библиотеку которая позволяет работать с определяемыми методами для базовых классов (в англ. литературе их называют natives) внутри отстраненной песочницы:
Возможность расширения базовых классов в JavaScript дает вам возможность приспособить язык под ваши нужды. Вы можете добавить такой метод как «hello world».capitalize () или реализовать отсутствующие функции, как например [1,2,3].indexOf (2). Проблема в том что библиотеки / фреймворки / скрипты могут переписывать базовые методы javascript'а или методы друг друга, что может привести к неожиданным результатам. Fusebox — это урезанная версия компонента «песочница» из библиотеки FuseJS. Fusebox позволяет избежать проблем описанных выше, убирая работу с определением методов базовых классов в песочницу.
Например:
-
var fb = Fusebox();
-
fb.Array.prototype.hai = function() {
-
return fb.String("Oh hai, we have " + this.length + « items.»);
-
};
-
-
fb.Array(1,2,3).hai(); // "Oh hai, we have 3 items."
-
typeof window.Array.prototype.hai; // undefined
У Джона есть серия коротких скринкастов, описывающих работу с песочницей и техники благодаря которым это стало возможным.
- Sandboxed Natives 101: Screencast One
- How to create a sandbox: Screencast Two
- How to create a Fusebox: Screencast Three
- The Final Countdown: Screencast Four
Есть чему поучится. Обидно что приходится запоминать все эти манипуляции, эту магию... Но это JavaScript, он такой какой есть.
Возможно я немного напортачил с терминологией, поправьте если что не так...
