2010-03-06 3 views
3

Возможно ли использовать javascript-модуль песочницы из DOM-манипуляции? Fo напримерМодуль javascript для песочницы

var Core = { 
    register: function(config){config.init()}, 
    publicApi: { 
     msgbox: function(msg){alert(msg)} 
    } 
} 
Core.register({ 
    name: 'testmodule', 
    init: function(){ 
     /* from there i want to see only function defined in Core.publicApi, no jQuery direct access, no DOM */ 
    } 
}); 

ответ

0

Ну, несколько: вы можете песочницу функции, но ее также вызываемые методы будут песочница. Это значит, что любой материал в Core.publicApi не сможет получить доступ к document и тому подобному. Или, по крайней мере, в Javascript нет пуленепробиваемой песочницы, которая позволит это перемычку.

Вы можете калечить то, что доступно временно перезапись переменной window:

var window = {"Core": Core}; 

Но не глобальных переменная (даже такие, как alert) будет существовать для вызываемых метод. Это, скорее всего, нарушит ваш API.

Вы можете добавить другого участника (например, _unsandboxed или что-то еще) в новую переменную window, чтобы ваш API мог получить доступ к элементам. Но, как я уже сказал, это не пуленепробиваемый, так как песочницы могут все еще получать доступ к _unsandboxed.

3

Я предлагаю читать эту slidedeck на App, песочнице и Модуль рисунка на Slideshare называется Building a JavaScript Module Framework at Gilt.

+1

Пожалуйста, не оставляйте ссылки только на ответы. Если вы напишете правильный ответ, я удалю свой downvote. –