gpt4 book ai didi

javascript - 自引用回调

转载 作者:行者123 更新时间:2023-11-30 16:56:59 25 4
gpt4 key购买 nike

问题已解决,欢迎就最佳实践提出任何意见

我正在开发一款 JS(和 JQuery)战舰游戏,它具有“dropBoat”功能,允许用户在板上放置一艘船。此函数的细节并不重要(它以 board 和 boatLength 作为参数)但是我无法重复使用它来放置第二艘船。

我正在努力实现这一系列事件:

调用了 dropBoat 函数 --> 调用了 dropBoat 函数 --> 调用了 dropBoat 函数 --> 调用了 StartPlay 函数。这是我当前尝试的草图。

var dropBoat = function(board, length, callback){
//function code here
$(document).keydown(function(e){
if(e.which == "38"){
//more function code here
callback()
}
}
}

var dropThirdBoat = dropBoat(board1, 3, startPlay);
var dropSecondBoat = dropBoat(board1, 2, dropThirdBoat);
var dropFirstBoat = dropBoat(board1, 3, dropSecondBoat)();

这似乎可行

var dropThirdBoat = function(){
dropBoat(board1, 3, startPlay);
}
var dropSecondBoat = function(){
dropBoat(board1, 2, dropThirdBoat);
}
var dropFirstBoat = dropBoat(board1, 3, dropSecondBoat);
var dropBoat = function(board, length, callback){
//function code here
$(document).keydown(function(e){
if(e.which == "38"){
//more function code here
callback();
}
}
}

最佳答案

您不想多次绑定(bind)事件处理程序。将 keydown 处理程序移出您的函数代码并移至顶层。

$(document).keydown(function (e) {
if (e.which == "38"){
//more function code here
callback();
}
}

话虽如此,简单地使用循环怎么样?

var dropBoat = function(board, length){
//function code here
}

var board1 = new BattleshipBoard(),
board2 = new BattleshipBoard(),
boats = [1, 1, 1, 2, 2, 3, 5],
b;

for (b = 0; b < boats.length; b++) {
dropBoat(board1, boats[b]);
dropBoat(board2, boats[b]);
}

关于javascript - 自引用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29554151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com