Сделал вот так
window.all = ['ноль', 'один', 'два', 'три'];
var numbers = {
find : function(num) {
var ret = {};
ret.setText = function(text) {
window.all[this.num] = text;
this.text = text;
return this;
};
ret.num = num;
ret.text = window.all[num];
return ret;
},
findByText : function(text) {
var num = 0;
window.all.every(function(val, key){
if(val == text) {
num = key;
return false;
}
return true;
});
return this.find(num);
}
};
/////////////////////////////////////////////
var zero = numbers.find(0);
var two = numbers.find(2);
var one = numbers.findByText('один');
console.log('zero.text=' + zero.text); //ноль
console.log('two.text=' + two.text); //два
two.setText('двойка');
console.log('two.text=' + two.text); //двойка
console.log('numbers.find(2).text=' + numbers.find(2).text); //двойка
console.log('one.text=' + one.text); //один
one.setText('единица');
console.log('one.text=' + one.text); //единица
console.log('numbers.findByText(\'единица\').text=' + numbers.findByText('единица').text); //единица
Работает идеально, смотрится отлично.
Всё правильно сделал?