2014-01-27 3 views
1

Выполняя javascript-приложения, я использую приведенное ниже соглашение для написания кода.скрытие основного объекта/класса javascript

Я использую один объект javascript для хранения всех моих функций и информации о времени выполнения.

Это простой сценарий использования для примера, не считайте его функциональным кодом.

var main = { 
     functOne: function(val){ 
       main.functTwo(parseInt(val)); 
     }, 
     functTwo: function(data){ 
       main.runtimeData = data; 
     } 
    } 

Usage : <button onclick="main.functOne('123')">Click Me!</button> 

Это иначе работает нормально, но можно просмотреть/изменить свойства и информацию во время выполнения из консоли браузера, обращаясь к объекту main.runtimeData.

Как я могу ограничить такой доступ, не мешая функциям?

Пожалуйста, добавьте примеры некоторых похожих кодов, если сможете.

+3

Попытки контролировать то, что пользователь делает с кодом, отправляемым на их компьютер, обречены на провал. – Quentin

+0

@Quentin, я действительно не мог понять, что вы имели в виду. – codin

+0

Невозможно эффективно ограничить доступ так, как вы хотите. – Quentin

ответ

1

Javascript всегда «находится в руках врага». Сказав это, шаблон модуля может помочь вам скрыть некоторые функции. Изменить: повторять, это не безопасно или не секретно, все это в руках вашего пользователя.

var main = (function() { 

    var x = {}; 

    // Private 
    var private_var = "foo"; 

    // Public 
    x.get_var = function() { 

     return private_var; 
    } 

    return x; 

}()); 

Очень грубый пример, но это может вам помочь. Больше информации на adequatelygood.com

+0

Можете ли вы объяснить, как работает этот код. Не все биты и куски, только структура связана с моим вопросом. https://jquery-scrollview.googlecode.com/files/jquery.scrollview.js – codin

2

В современном браузере вы можете использовать freeze, чтобы дать некоторые помехи.

Метод Object.freeze() замерзает объект, то есть предотвращает добавление новых свойств; предотвращает удаление существующих свойств; и предотвращает изменение существующих свойств или их перечислимость, настраиваемость или возможность записи. По сути, объект делается эффективно неизменным. Метод возвращает замороженный объект.

+0

Можете ли вы объяснить, как работает этот код. Не все биты и куски, только структура связана с моим вопросом. https://jquery-scrollview.googlecode.com/files/jquery.scrollview.js – codin

+0

Страница MDN, с которой я связан, дает вам полное описание и примеры, даже дополнительную функцию под названием 'deepFreeze'. Что вы не понимаете? [Вот еще одна ссылка на ссылку ECMA5] (http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.9). – Xotic750

Смежные вопросы