Javascript - 具有 parent 个共同属性的 objects 集合
Javascript - Collection of objects with parent properties in common
我想创建一个像数组一样工作的 object 集合。前段时间,我做了 ,在帮助我的人的帮助下,我想出了以下解决方案:
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));
}
但是,这会使 children 与 parent 断开连接。例如,假设这个集合有一个 render()
函数,它使它的 children 打印一些 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('.......')
}
它应该能够在一个页面中设置不同的集合,所以为所有 Newobj.Collection
设置一个全局 container
不是一个解决方案。这是一个示例,我需要它来处理比 render()
函数更复杂的过程。
任何人都知道我怎样才能使数组能够访问它所属的 parent class?
如果解决方案可以 JSON.stringify
ed 并在服务器端被视为一个数组,那也很好,尽管这不是这个问题的主要问题。现在,如果我将 属性 设置为数组,它在服务器端被视为 object 和 size > 0
。
谢谢!
在元素中创建对集合的引用:
Newobj.Collection.prototype.push = function(o){
Array.prototype.push.call(this, new Newobj.Element(o,this));
}
//element constructor gets as second paramater instance of collection
Newobj.Element=function(o,collection){
//this.parent in every element is collection reference
this.parent=collection;
}
Newobj.Element.prototype.render = function(){
$(this.parent.html_container).html('.......')
}
或元素选项中没有引用:
Newobj.Collection.render = function(){
var parent=this;
$.each(this, function(i, el){
el.render(parent.html_container)
})
}
Newobj.Element.render = function(html_container){
$(html_container).html('.......')
}
但是这个版本需要有方法参数。
我想创建一个像数组一样工作的 object 集合。前段时间,我做了
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));
}
但是,这会使 children 与 parent 断开连接。例如,假设这个集合有一个 render()
函数,它使它的 children 打印一些 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('.......')
}
它应该能够在一个页面中设置不同的集合,所以为所有 Newobj.Collection
设置一个全局 container
不是一个解决方案。这是一个示例,我需要它来处理比 render()
函数更复杂的过程。
任何人都知道我怎样才能使数组能够访问它所属的 parent class?
如果解决方案可以 JSON.stringify
ed 并在服务器端被视为一个数组,那也很好,尽管这不是这个问题的主要问题。现在,如果我将 属性 设置为数组,它在服务器端被视为 object 和 size > 0
。
谢谢!
在元素中创建对集合的引用:
Newobj.Collection.prototype.push = function(o){
Array.prototype.push.call(this, new Newobj.Element(o,this));
}
//element constructor gets as second paramater instance of collection
Newobj.Element=function(o,collection){
//this.parent in every element is collection reference
this.parent=collection;
}
Newobj.Element.prototype.render = function(){
$(this.parent.html_container).html('.......')
}
或元素选项中没有引用:
Newobj.Collection.render = function(){
var parent=this;
$.each(this, function(i, el){
el.render(parent.html_container)
})
}
Newobj.Element.render = function(html_container){
$(html_container).html('.......')
}
但是这个版本需要有方法参数。