数组中的 JavaScript 函数参数

标签 javascript arrays function object

我想做的是这个

    $.each($(".canvas"), function(n) {
        var canvas = $(this)[0].getContext("2d");     
        canvas.drawImage(options[n]);
    });

其中选项将是一个参数数组,但无法弄清楚应该如何格式化该数组才能使其工作

显然不是

['img, 0,  0, 70, 17, 21, 16, 70, 17', 'img, 0,  0, 80, 12, 21, 16, 70, 17']

这两者都不是

[''+img+', 0,  0, 70, 17, 21, 16, 70, 17', ''+img+', 0,  0, 80, 12, 21, 16, 70, 17']

也不是这个

{0: [img, 0,  0, 70, 17, 21, 16, 70, 17]}

这也行不通

var options = [[img, 0,  0, 70, 17, 21, 16, 70, 17],
               [img, 0, 16, 70, 17, 21, 16, 70, 17],
               [img, 0, 32, 70, 17, 21, 16, 70, 17],
               [img, 0, 48, 70, 17, 21, 16, 70, 17]];

img.onload = function() {
    $.each($(".canvas"), function(n) {
        var canvas = $(this)[0].getContext("2d");     
        canvas.drawImage(options[n].join(', '));
    });
};

错误始终为“Uncaught TypeError: Type error”或“Uncaught TypeError: Illegal invocation”

最佳答案

使用Function.apply .

canvas.drawImage.apply(canvas, options[n]);

其中选项[n]看起来像

[img, 0, 0, 70, 17, 21, 16, 70, 17]

完整示例:

var options = [[img, 0,  0, 70, 17, 21, 16, 70, 17],
               [img, 0, 16, 70, 17, 21, 16, 70, 17],
               [img, 0, 32, 70, 17, 21, 16, 70, 17],
               [img, 0, 48, 70, 17, 21, 16, 70, 17]];

$(img).load(function()
{
    $(".canvas").each(function(n)
    {
        var canvas = this.getContext('2d');     
        canvas.drawImage.apply(canvas, options[n]);
    });
});

演示:http://jsfiddle.net/mattball/5EQbC/

关于数组中的 JavaScript 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6641742/

相关文章:

javascript - 为什么在keydown回调中返回false并不会停止按钮点击事件?

javascript - 防止点击功能多次触发

c - 在 C 中将指针传递给只读函数

excel - 具有精确 OR 值的嵌套 IF 语句

javascript - Node/Express Js如何从 Angular 获取ajax参数

javascript - 关于 Javascript 中的 parseInt() 的说明

javascript - 打开 Websocket 之前进行身份验证

C 中的字符数组?

c# - 如何获取存储在内存中的可执行文件的 FileVersion 信息作为字节数组?

function - matlab:fmincon,将变量传递给nonlcon