我试图创建具有另一个对象“项目”的对象“房间”。 我希望每个“项目”都引用“房间”。
我只想知道某个“元素”的“房间”是什么……
问题来了:
// Creating Room Class
function Room(name){
this.name = name;
this.items = [];
};
// function that creates item in a Room
Room.prototype.addItem = function(name){
var newItem = new Item(name, this);
this.items.push(newItem);
}
// Creating Items Class
function Item( name, room ){
this.name = name;
this.parentRoom = room; // HERE IS THE PROBLEM!!
// I need reference to my Room Class
};
// Lets create a Room
var myRoom = new Room('MyRoom');
// And lets add some items
myRoom.addItem("chair");
myRoom.addItem("bed");
myRoom.addItem("computer");
// Result -> you can see endless loop of Rooms in th Items
console.log( myRoom );
在Inspect元素中可以看到死循环。
Screenshot from Inspect element
或者创建这个东西的正确方法是什么? 我需要对“Item”类使用“extends”方法到“Room”吗?
最佳答案
当您检查 javascript 对象时,未结束的对象引用没有任何问题。它们实质上在对象引用中形成了一个循环图。
但是,这意味着您可以获得循环图的和缺点。
当遍历/迭代图形时,您需要通过跟踪您已经访问过的对象并且不会多次访问它们来小心无限循环。 (即通过跟踪 visited
map )
关于Javascript - OOP 引用循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651615/