如果不能在javascript中更新或重新声明常量,为什么这段代码可以工作?

如果不能在javascript中更新或重新声明常量,为什么这段代码可以工作?,javascript,Javascript,如果不能更新或重新声明常量,那么如何更新常量对象中的方法 const bg = { sX: 0, sY: 0, w: 275, h: 226, x: 0, y: cvs.height - 226, draw: function(){ ctx.drawImage(sprite, this.sX, this.sY, this.w, this.h, this.x, this.y, this.w, this.h);

如果不能更新或重新声明常量,那么如何更新常量对象中的方法

const bg = {
    sX: 0,
    sY: 0,
    w: 275,
    h: 226,
    x: 0,
    y: cvs.height - 226,

    draw: function(){
        ctx.drawImage(sprite, this.sX, this.sY, this.w, this.h, this.x, this.y, this.w, this.h);
        ctx.drawImage(sprite, this.sX, this.sY, this.w, this.h, this.x + this.w, this.y, this.w, this.h);
    }
}

bg.x = 20;
bg存储引用

您正在更改此处的属性,而不是引用

所以这是无效的

bg.x = 20;
const bg={
sX:0,
sY:0,
w:275,
h:226,
x:0
}
bg.x=20;
设rg={}
bg=rg
bg存储引用

您正在更改此处的属性,而不是引用

所以这是无效的

bg.x = 20;
const bg={
sX:0,
sY:0,
w:275,
h:226,
x:0
}
bg.x=20;
设rg={}

bg=rg
bg是对对象的引用。引用无法更改,但被引用的对象仍然可以更改。这是否回答了您的问题?在相关说明中,
Object.freeze
可用于防止对对象进行更改<代码>对象。印章可能也很有意思TBG是对对象的引用。引用无法更改,但被引用的对象仍然可以更改。这是否回答了您的问题?在相关说明中,
Object.freeze
可用于防止对对象进行更改<代码>对象。印章也可能会引起兴趣