У меня есть существующий класс, который мне нужно преобразовать, поэтому я могу добавлять функции, такие как my_class.prototype.my_funcs.afucntion = function() {alert (private_var);} после определения основного объекта. Каков наилучший/простой способ преобразования существующего класса для использования этого метода? В настоящее время я объект JavaScript построен так:Можно ли добавить функции к классу JS, которые имеют доступ к частным переменным класса?
var my_class = function(){
var private_var = '';
var private_int = 0
var private_var2 = '';
[...]
var private_func1 = function(id) {
return document.getElementById(id);
};
var private_func2 = function(id) {
alert(id);
};
return{
public_func1: function(){
},
my_funcs: {
do_this: function{
},
do_that: function(){
}
}
}
}();
К сожалению, в настоящее время, мне нужно динамически добавлять функции и методы этого объекта с PHP на основе выбранных пользователем настроек, не может быть никаких функций добавлены или 50. Это делает добавление функций очень сложными, потому что добавляет my_class.my_funcs.afunction(); Функция, я должен добавить PHP-вызов внутри JS-файла , чтобы он мог получить доступ к приватным переменным, и это просто делает все настолько грязным.
Я хочу использовать прототип метода, чтобы я мог очистить все вызовы PHP внутри основного JS-файла.
Просто для уточнения, наиболее важной частью является получение доступа к закрытым переменным из приложенных функций. Использование «прототипа» не требуется, если ** my_class.my_funcs.afunction(); ** добавляется к объекту вне основного класса и может получить доступ к private_var. –
У вас есть объект, а не класс.Точнее, это синглтон. Если вы использовали вызовы конструктора для создания новых объектов на основе вашей функции, мы могли бы назвать это «псевдоклассом». Но здесь это не так. –
Я не уверен, что правильно вас понимаю. Вы говорите, что просто увеличение объекта 'my_class' не является для вас вариантом? (Например: 'my_class.my_funcs.afunction = function() {...};') –