在我编写的代码中,对象具有作为其属性之一的另一个对象。在第二个对象中,存在一个指向父对象的属性。现在,当我在firebug中查看对象时,我可以无休止地浏览这个自引用循环。
这个糟糕的编程吗?这种设置会产生什么影响?有没有更好的方法通过其子对象设置对父对象的访问?
这是我所拥有的简化示例:
function Entity(){
this.subEntity = {parent:null};
}
function createEntity(){
var entity = new Entity();
entity.subEntity.parent = entity;
}
createEntity();
需要对象父级的目的是因为我使用的库创建了我已经包装到自己的外部对象中的特定对象。库的方法指向它自己的对象,但有时我想指回我的外部对象来访问它的方法。感谢。
根据Kevin B的说法,这里更具体地了解我的情况:
var b2Listener = Box2D.Dynamics.b2ContactListener //library object
var listener = new b2Listener;
//Next I overwrite a method in order to gain control of it,
//which receives two arguments, one being a contact object which contains the two
//fixtures which collided, and the impulse is the force.
listener.PostSolve = function(contact, impulse){
conA = contact.GetFixtureA()
}
//But I have the fixtures wrapped in my own objects which have properties and methods
//outside the fixture which I would like to access within the PostSolve method.
希望有所帮助。也许我应该写一个返回父级的方法?不知道如何在方法中引用它,除非我让父项成为fixture的属性,这回到了我原来的问题。
答案 0 :(得分:2)
window.window.window.window.window.window.window.window.......
反向引用实际上很有用。例如,<canvas>
的渲染上下文对象具有指向画布的.canvas
属性。虽然它是真的,你可以自己跟踪画布,它只是让它更容易引用。