Показать сообщение отдельно
  #13 (permalink)  
Старый 09.04.2013, 01:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Ну фабричную функцию можно использовать и как конструктор, хотя смысла в этом особого и нет.) Можно даже навешать на элемент дополнительные свойства, но... см. выше.)

function Menu(options){
	function liToString(){
		return this.innerText || this.textContent;
	}

	var	d = document, 
		_ul = document.createElement('ul'),
		_items = options.items || [],
		_itemsCount = options.itemsCount || _items.length;
		
	;
	for(var i = 0; i<_itemsCount; i++){
		_ul[i] = _ul.appendChild(d.createElement('li'));
		_ul[i].appendChild(d.createTextNode(_items[i] || 'default'));
		_ul[i].toString = liToString;
	}
	_ul.length = _itemsCount;
    return _ul
};

var menu = new Menu({ //new тут никакой роли не играет =\
	items : ['1','два',3],
	itemsCount : 10
})

document.body.appendChild(menu)
alert([
	menu,
	menu[1],
	menu.length
].join('\n'))


P.S. С новомодным Proxy кстати можно такое творить... будет через годик другой.
__________________
29375, 35

Последний раз редактировалось Aetae, 09.04.2013 в 01:42.
Ответить с цитированием