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

问题描述:

Here is a demo为什么这个变量在JavaScript中像一个指针一样工作? (使用HTML5 Canvas)的

具体来说,这是我感到迷惑的部分:

$('.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不直接支持指针。

Javascript不直接支持指针。

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

+0

啊。我认为这是他们如何在JS中工作,但我无法删除对象,因为我之前在层次结构中定义了它,所以我认为有一些奇怪的指针魔术正在进行。优秀。 – drewblaisdell

在javascript中,通过引用传递对象。他们从不复制。