我得到的錯誤對象是不確定的,當我把它從另一個對象
Uncaught TypeError: Cannot read property 'render' of undefined
它是在第29行,當我調用該函數listView.render()
感謝您的幫助
var model = {
// the array with cats names
cats: ['mew', 'meo', 'meaw', 'memaw', 'mesaw', 'metaw'],
// The array of cats objects
Cats: []
}
var oct = {
// selecting the list on the left of the container
catsList: function() {
return document.querySelector('#catsList');
},
//selecting the cat display div
catsDisplay: function() {
return document.querySelector('#catsDisplay');
},
// creating the Cat object and push it to the Cats array
addCat: (function (arr) {
for (var i = 0; i < arr.length; i++) {
model.Cats.push((function (n) {
return {
name: n,
photo: n + '.jpg',
score: 0
};
}(arr[i])));
listView.render(model.Cats[i]);
};
}(model.cats))
}
var listView = {
render: function (CatObj) {
oct.CatList.innerHTML = "<div id='"+CatObj.addCat.name+"'>ss</div>"
}
}
的'addCat'代碼被包裝在一個IIFE並且因此執行的時候了。這是一個非常糟糕的設計,並且非常出乎意料,也是爲什麼'listView'在那個時候是未定義的。你至少應該有一些像'oct.init()'這樣的東西。你的整個代碼實際上是非常糟糕的海事組織(沒有冒犯性),在各地都有緊密的耦合和隱藏的依賴。例如,爲什麼listView沒有封裝它自己的列表DOM元素......你不必從那裏到達oct。 – plalx