gpt4 book ai didi

Javascript自定义应用函数

转载 作者:行者123 更新时间:2023-11-28 09:18:22 25 4
gpt4 key购买 nike

我正在与一位 friend 构建一个 javascript 库,该库旨在使 HTML5 游戏创建变得更容易(但实际上只是为了好玩),以下是一些我遇到问题的代码:

/* Calls f on all the elems of the list that pass p and implement f */
var apply = function (f, p, list) {
for (var i in list) {
if (p(list[i]) === true && list[i][f] != undefined && typeof list[i][f] === 'function') {
list[i][f]();
}
}
};
this.draw = function(p) {
apply(moveView, p, this.views);
};

用户将调用 this.draw 函数并向其传递一个谓词。仅当 View 数组中的每个对象都实现了传递到 apply 函数的 moveView 函数时,才会执行该函数。

但是,我的控制台抛出一个错误,提示“moveView 未定义”,这是有道理的,因为 .当我调用 apply 函数时,我不希望解释器检查 moveView 是否存在,我只想将其传入,以便我可以检查所应用的每个对象是否实现该函数。我认为也许像 apply("draw", p, this.views); 那样调用 apply 会起作用,但这也不起作用,因为在 apply 函数中, f 不再是一个函数,它是一个字符串。我真的只是希望能够将任何通用函数名称传递给我的 apply 函数,以便我可以在其中进行所有检查。

我的所有代码都可以在我的 Github 上找到.

编辑:

    /*View object*/
var View = (function(){
var constr = function(f, o, i){
this.frame = utility.checkFrame(f);
this.orient = utility.checkOrientation(o);
/*user identification string*/
this.id = i;
this.moveView = function(){
console.log("testing");
};
};
return constr;
}());

最佳答案

如果调用 apply() 时您的函数不存在,那么您检查函数所针对的对象处也不存在该函数。

此外,如果 f 是您的函数参数,则 list[i].f 不会计算为 list[i].yourFunction。它始终是list[i].f。您需要检查list[i][f]

关于Javascript自定义应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341994/

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