为什么这个变量在Javascript中像指针一样? (使用HTML5 Canvas)

时间:2011-11-27 23:07:47

标签: javascript html5 canvas

Here is a demo

具体来说,这是我觉得令人困惑的部分:

$('.red').change(function(){
    pix = imageData.data;

    for(var i = 0, n = pix.length; i < n; i += 4){
        var green = 1, blue = 1;
        pix[i] = pix[i] * $(this).val();
        pix[i + 1] = pix[i + 1] * green;
        pix[i + 2] = pix[i + 2] * blue;
    }
    context.putImageData(imageData, 0, 0);
});

如何修改pix(应该在全局范围内)修改imageData对象? Javascript不直接支持指针。

2 个答案:

答案 0 :(得分:4)

  

Javascript不直接支持指针。

不,但是it is a reference,它具有非常相似的语义。您没有在该作业中创建副本。对象通过引用传递,原始类型按值传递。

答案 1 :(得分:1)

在javascript中,对象通过引用传递。永远不会复制它们。