Предположим, я создаю пользовательский объект / javascript "class" (airquotes) следующим образом:
// Constructor
function CustomObject(stringParam) {
var privateProperty = stringParam;
// Accessor
this.privilegedGetMethod = function() {
return privateProperty;
}
// Mutator
this.privilegedSetMethod = function(newStringParam) {
privateProperty = newStringParam;
}
}
Затем я хочу составить список тех пользовательских объектов, где я могу легко добавлять или удалять вещи из этогосписок.Я решил использовать объекты как способ хранения списка пользовательских объектов, поэтому я могу добавить пользовательские объекты в список с помощью
var customObjectInstance1 = new CustomObject('someString');
var customObjectInstance2 = new CustomObject('someOtherString');
var customObjectInstance3 = new CustomObject('yetAnotherString');
myListOfCustomObjects[customObjectInstance1] = true;
myListOfCustomObjects[customObjectInstance2] = true;
myListOfCustomObjects[customObjectInstance3] = true;
и удалить пользовательские объекты из списка с помощью
delete myListOfCustomObjects[customObjectInstance1];
но если я попытаюсь перебрать список с помощью
for (i in myListOfCustomObjects) {
alert(i.privilegedGetMethod());
}
, я получу ошибку в консоли FireBug, которая говорит: «i.privilegedGetMethod () не является функцией».Есть ли способ исправить эту проблему или идиома в JavaScript, чтобы сделать то, что я хочу?Извините, если это глупый вопрос, но я новичок в javascript и поищу в интернете решения моей проблемы безрезультатно.Буду признателен за любую помощь!
PS Я понимаю, что мой пример очень упрощен, и я могу просто сделать privateProperty общедоступным, используя this.property или что-то еще, но тогда я все равно получу неопределенное в предупреждениихотел бы сохранить его в капсуле.