Я хотел бы создать коллекцию объектов, которая работает как массив. Некоторое время назад, я сделал this question и я придумал следующее решение с помощью людей, которые помогли мне:Javascript - коллекция объектов с родительскими свойствами в общем
Newobj.Collection = function(){
Array.apply(this);
for(var i = 0; i < arguments.length; i++){
for(var j = 0; j < arguments[i].length; j++){
this.push(arguments[i][j]);
}
}
return this
}
Newobj.Collection.prototype = Object.create(Array.prototype);
Newobj.Collection.prototype.push = function(o){
Array.prototype.push.call(this, new Newobj.Element(o));
}
Однако, это оставляет детей Unconnected от родителей. Например, представьте, что в этой коллекции есть функция render()
, которая позволяет своим детям печатать HTML-код на странице. Ну, я хотел бы быть в состоянии сказать что-то вроде:
Newobj.Collection.html_container = '#cont';
Newobj.Collection.render = function(){
$.each(this, function(i, el){
el.render()
})
}
Newobj.Element.render = function(){
$(parent.html_container).html('.......')
}
Он должен быть в состоянии установить различные коллекции на одной странице, так что глобальный container
для всех в Newobj.Collection
s не является решением проблемы. Это пример, и мне это нужно для более сложных процессов, чем просто функция render()
.
У кого-нибудь есть идея, как я могу сделать массив доступным для родительского класса, частью которого он является?
Если решение может быть JSON.stringify
ed и рассматриваться как массив на стороне сервера, было бы здорово, хотя это не основная проблема для этого вопроса. Прямо сейчас, если я задаю свойство массиву, он рассматривается как объект с size > 0
на стороне сервера.
Спасибо!
Не думал об этом. Я проверю его, и когда я увижу, работает ли он (что он должен, когда я его прочитаю), я помечаю ваш ответ как правильный! Спасибо за помощь! – Unapedra
У меня возникла проблема * производительности *. Если я поместил * collection * в качестве параметра, что произойдет с элементом номер 100, когда я туда доберусь? Будет ли оно иметь свойство, называемое * parent *, в котором уже есть 99 других элементов? и 99-й, будет иметь свойство * parent * с массивом с 98 элементами и так далее? – Unapedra
Этот параметр является ссылкой на объект, поэтому он будет содержать не 100 объектов, а один объект и 100 ссылок, поэтому проблем с производительностью не будет. –