这个JS函数如何使用参数?

How to use parameters for this JS function?

我有以下功能,可以打印出几个像素字母形状的正方形。现在你会注意到我只有字母 a 和 b 在那里。最后我将添加所有字符,但首先我需要知道如何编写此函数,以便我可以将参数传递给它,它会打印出形状,看起来像您作为参数传递给函数的字母。这是现在的功能:

function make_letter() {
    var c = document.getElementById("myCanvas");
    var context = c.getContext("2d");
    var w = parseInt(getComputedStyle(c).width);
    var h = parseInt(getComputedStyle(c).height);
    var full = Math.floor(h / 16);
    var unit = full - 0.75;
    var inv = {
        a: [[0, 2], [1, 1], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [3, 0], [3, 4], [4, 0], [4, 4]],
        b: [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 4], [2, 0], [2, 1], [2, 2], [2, 3], [3, 0], [3,4], [4,0], [4,1], [4,2], [4,3]]
    };
    for (i = 0; i <= inv.b.length; i++) {
        var x = inv.b[i][1] * full;
        var y = inv.b[i][0] * full;
        context.beginPath();
        context.rect(x, y, unit, unit); 
        context.fillStyle = 'black';
        context.fill();
    }
}

我想用 make_letter('a'); 调用该函数并让它打印一个与您传递的字母匹配的字母,但在函数的某些点我不确定如何合并参数变量正确。就像这一行: for (i = 0; i <= inv.b.length; i++) { 我如何告诉它使用 inv.param.length 假设 'param' 是传递给函数的参数变量的名称?

这里是一个fiddle的原函数:http://jsfiddle.net/po74m2ut/

function make_letter(letter) {
    ...
    for (i = 0; i <= inv[letter].length; i++) {
        var x = inv[letter][i][1] * full;
        var y = inv[letter][i][0] * full;
        context.beginPath();
        context.rect(x, y, unit, unit); 
        context.fillStyle = 'black';
        context.fill();
    }
}

在我的最后一个回答中,我几乎解释了这个案例 - 我想我应该有!这是您真正想要使用 object[property] 形式的引用而不是 object.property 的时候...当 属性 的实际名称存储在变量中时。

编写该循环的另一种方法是:

inv[letter].forEach(function(coord) {
   context.beginPath();
   context.rect(coord[1] * full, coord[0] * full, unit, unit); 
   context.fillStyle = 'black';
   context.fill();
});