所以我试图做一个非常简单的逻辑 - 但我的javascript决定疯了,我不知道为什么会发生这种情况......它只是没有任何意义..
所以我把这个对象称为Room,由于某种原因它不接受新函数..
function Room(name) {
this.name = name;
this.peopleInside = 0;
this.worksFine = function() {
return "there are " + this.peopleInside + " people inside " + this.name;
}
this.worksNotAtAll = function() {
return "there are " + this.peopleInside + " people inside " + this.name;
}
}
正如您所看到的,两种方法完全相同,只是名称不同。然后我在另一个(main.js)文件中调用这两个函数:
var house = [];
createHouses();
showDebugInfo();
function createHouses() {
house.push(new House("simple house"));
house[0].createFlat("vacant flat"); // array of Flat-Objects
house[0].flat[0].createRoom("empty room"); // array of Room-Objects
}
function showDebugInfo() {
alert(house[0].flat[0].room[0].worksFine());
alert(house[0].flat[0].room[0].worksNotAtAll());
}
第一个功能正常但第二个功能(应该是相同的)根本不起作用。无论我做什么,我都无法在这个类中添加新功能 - 我完全无能为力,这从未发生过之前..
我真的很享受自己,但现在我卡在这里......每当我尝试为这个文件添加任何类型的新功能时,我甚至不能再改变这个怪异的函数名,我总是得到这个错误:< / p>
Uncaught TypeError: house[0].flat[0].room[0].worksNotAtAll is not a function
有什么建议我可以寻找吗?这真让我感到困惑..
编辑: 人们一直在询问我在这里创建房间的文件(房子看起来几乎和btw一样):
function Flat(name) {
this.name = name;
this.peopleInside = 0;
this.room = [];
this.createRoom = function(roomName) {
this.room.push(new Flat(roomName)); // this was incorrect! it should be this.room.push(new Room(roomName));
}
this.getPeopleCountInFlat = function() {
return "there are " + this.peopleInside + " people inside " + this.name;
}
}
哦天哪,我现在看到了这个错误..我正在制作一个新的Flat而不是一个新房间:/哇,谢谢那个提示家伙!