Используйте замыкания, например,
var settings = function(){
var private = {};
private.slides = '#slides';
var public = {}
public.inDent = ($(private.slides).find('li').outerWidth());
public.doSomething = function(){
console.log( public.inDent );
}
return public;
}();
Преимущество этого также в том, что он дает вам "инкапсуляцию" бесплатно
Кстати, вы не должны полагаться на то, что является общедоступным, потому что, ну, это может быть изменено, например, settings.inDent = null
, а затем settings.doSomething()
может больше не работать правильно. Какой правильный способ сделать это следующий
...
private.inDent = ($(settings.slides).find('li').outerWidth());
public.inDent = private.inDent;
public.doSomething = function(){
console.log( private.inDent );
}
т.е.. сделать значение inDent
доступным только для чтения (в том смысле, что ничто вне объекта settings
не может фактически изменить внутреннюю реализацию private.inDent
); пока вы всегда используете private.inDent
из settings
, вы в безопасности, потому что даже если кто-то сделает settings.inDent = null
, settings.doSomething();
будет по-прежнему функционировать правильно