Я не знаю как это называется, и название топика такое же.
Видел на одном сайте очень удобную штуку для работы с данными пользователей.
var vasea = users.findByName('Вася');
var alex = users.findByName('Саша');
alert(vasea.lastname); //Пупкин
alert(alex.lastname); //Иванов
Как возвращать - я ещё понимаю - просто
return {lastname: ...};
Но возможно ли изменять потом их? Посмотрел
http://javascript.ru/tutorial/object и стал пробовать:
var numbers = {
all : ['ноль', 'один', 'два', 'три'],
find : function(num) {
this.text = this.all[num];
return this;
}
};
var zero = numbers.find(0);
var two = numbers.find(2);
alert('0=' + zero.text); //0=два
alert('2=' + two.text); //2=два
Ну это логично. Мы же меняем одно и то же.
Пробовал куда-то впихнуть prototype, хотя я не совсем понял как с ним работать. Точнее не понял как он может мне помочь. Но всё равно у меня получилось 0=2.
Тогда у меня другая идея.
numbers = {find:function(num){return new numbers_sys(num)}};
numbers_sys будет работать с
window.all, которая
['ноль', 'один', 'два', 'три']
Но я чувствую, что оно делается не так.
Под "менять" имею в виду
numbers.find(2).text; //два
numbers.find(2).setText('двойка');
numbers.find(2).text; //двойка
Как это делается? Да и возможно ли это вообще... Может надо делать как я думаю - return new ...