Василий М.
Новичок
Возникла идея насчет JS.
С сервера черезх аякс возвращаются объекты данных любой вложенности.
Но поскольку мы кране ООПшны, нам хотелось бы иметь данные и методы работы с ними в одном месте.
Идея такова - пишем объект, содержащий методы для работы с данными корзины - хэлперы, методы форматирования, различные нужные нам вещи.
// Написали методы который можно вызывать как из контекста объекта, так и стандартным методом а-ля функция:
// Далее делаем инъекцию этих методов в объект данных:
injection(data, Helper);
// Используем:
console.log( data.user.userdata.inObject('[email protected]') ); // email
// Другой полезный метод:
console.log( data.user.getCountElements() );
Единственый минус - это перебор элементов через for(i in data) придется делать с проверкой на то, что typeof data != function.
С сервера черезх аякс возвращаются объекты данных любой вложенности.
Но поскольку мы кране ООПшны, нам хотелось бы иметь данные и методы работы с ними в одном месте.
Идея такова - пишем объект, содержащий методы для работы с данными корзины - хэлперы, методы форматирования, различные нужные нам вещи.
// Написали методы который можно вызывать как из контекста объекта, так и стандартным методом а-ля функция:
Код:
Helper = {
inObject: function(value, obj){
if (obj === undefined) {
obj = this;
}
if (obj.length !== undefined && !obj.length) { // для массивов
return false;
}
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (obj[key] == value) {
return key;
}
}
}
return false;
}
// ещё метод
getCountElements: function(obj) {
// ...
}
}
injection(data, Helper);
// Используем:
console.log( data.user.userdata.inObject('[email protected]') ); // email
// Другой полезный метод:
console.log( data.user.getCountElements() );
Единственый минус - это перебор элементов через for(i in data) придется делать с проверкой на то, что typeof data != function.