假设我有一个对象:
var shapes = {
addTriangle: function(color){
console.log("added " + color + " triangle");
},
addSquare: function(color){
console.log("added " + color + " square");
}
}
此对象将具有将经常更改和更新的方法,但所有方法将始终按顺序运行。有没有办法自动获取和运行所有方法,以简化可维护性? 类似的东西:
function runShapes(color){
shapeNames = Object.getOwnPropertyNames(shapes);
for(i = 0; i < shapeNames.length; i++){
shapeNames[i].apply(color);
}
}
这给`shapeNames [i] .apply不是一个函数'。奖励点告诉我如何使用函数式编程,而不是for循环:)
Codepen:
答案 0 :(得分:3)
你必须检查你正在呼叫的财产实际上是一个功能:
action
关于&#39;功能编程&#39;样式,您可以使用foreach,它将您传递的函数作为参数传递给数组的每个元素。所以你的代码应该是这样的:
if( typeof shapes[shapeNames[i]] === "function") {
// your code here
}
答案 1 :(得分:2)
首先关闭你的错误......你正在遍历属性名称,而不是属性。
$sel = "SELECT user_id FROM users WHERE status='Approved'";
$result = @mysqli_query ($dbcon, $sel);
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
$ins = "INSERT INTO income (user_id, income_amount) VALUES ('" . $row['user_id'] . "', '100')";
$giv = @mysqli_query ($dbcon, $ins);
}
应该是:
shapeNames[i].apply(color);
功能更强大的版本可能如下所示:
shapes[shapeNames[i]](color);