배열처럼 작동하는 개체 컬렉션을 만들고 싶습니다. 몇 시간 전, 나는 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));
}
그러나, 이것은 부모로부터 연결되지 않은 아이들을 떠난다. 예를 들어,이 컬렉션에 render()
함수가 있다고 가정하면 자식이 일부 HTML을 페이지에 인쇄하게됩니다. S는 해결책이 아니다 한 페이지에서 다른 컬렉션을 설정 할 수 있어야한다
Newobj.Collection.html_container = '#cont';
Newobj.Collection.render = function(){
$.each(this, function(i, el){
el.render()
})
}
Newobj.Element.render = function(){
$(parent.html_container).html('.......')
}
, 그래서 모든 Newobj.Collection
에 대한 글로벌 container
을 : 글쎄, 내가 좋아하는 뭔가를 말할 수 있었으면한다. 이것은 하나의 예이며, 나는 단지 render()
함수보다 복잡한 프로세스에 이것을 필요로합니다.
누구나 내가 포함하고있는 상위 클래스에 액세스 할 수 있도록 배열을 만들 수 있습니까?
해결책이 JSON.stringify
일 수 있고 서버 측에서 배열로 볼 수 있다면이 질문의 주요 문제는 아니지만 위대 할 수도 있습니다. 지금 배열에 속성을 설정하면 서버 측에 size > 0
인 객체로 간주됩니다.
고맙습니다!
그렇게 생각하지 않았습니까? 나는 그것을 시험해 볼 것이고 그것이 작동 하는지를 볼 때 (내가 읽었을 때), 당신의 대답을 올바른 것으로 표시 할 것이다! 도와 줘서 고마워! – Unapedra
나는 성능 * 가능한 문제를 생각해 냈다. * collection *을 매개 변수로 넣으면 거기에 도착할 때 요소 번호 100은 어떻게됩니까? 이미 99 개의 다른 요소가있는 * parent *라는 속성이 있습니까? 99 번째, 98 요소를 가진 배열을 가진 * parent * 속성을 가질 것인가? – Unapedra
이 매개 변수는 개체 참조이므로 100 개의 개체가 있지만 하나의 개체와 100 개의 참조가되므로 성능상의 문제가 없습니다. –