我正在开发一个生命游戏项目。我被建议创建自己的迭代函数,这样我就可以在需要迭代时使用它。以下是此部分的当前代码:
var onCellClick = function (event) {
// how to set the style of the cell when it's clicked
if(this.className === "dead") {
this.className = "alive";
} else {
this.className = "dead";
}
};
//applies the onclick listener to the entire board.
this.iterateCells(function(cell, x, y) {
cell.onclick = onCellClick;
});
GameOfLife.prototype.iterateCells = function(iterator) {
for(var y=0; y < this.height; y++) {
for(var x=0; x < this.width; x++) {
var currentCell = document.getElementById(x+"-"+y);
iterator(currentCell, x, y);
}
}
};
我正在做的是为我的20/20网格中的每个单元格激活'onCellClick'功能。
我不确定
a)在迭代单元格函数中,作为参数传入的迭代器是什么?它的价值是什么?这是我最困惑的部分。
b)当this.iterateCells(function(cell,x,y)实际执行的函数是什么时,作为迭代器参数传递?
以下是该项目的链接,您需要了解更多内容http://jsfiddle.net/8Tut6/3/
答案 0 :(得分:1)
函数是JavaScript中的一等公民,这意味着您可以将它们存储在变量中并将它们作为参数传递。例如:
// this function executes a function that is passed as a parameter
function execute(func)
{
func();
}
function hello()
{
alert("Hello, World!");
}
execute(hello);
execute(function () { alert("Hello again!"); });
此代码提醒“Hello,World!”然后“再次问好!”。
专门回答你的问题:
a)iterator
为function(cell, x, y) { cell.onclick = onCellClick; }
b)iterateCells
多次调用该函数。