【问题标题】:JS local variable changing globalJS局部变量改变全局
【发布时间】:2014-05-01 12:49:40
【问题描述】:

在以下脚本中,我无法理解为什么通过更改本地(私有)对象本地来更改对象全局中的属性道具?

var global = {}
global.prop = "Global init";

var ChangeState = (function () {    
var local = global;
local.prop = "Changed"; // expecting Global init?

})()

alert("Global = " + global.prop)

我不是要求 JS 改变全局,但它无论如何都会改变它?请帮忙。

【问题讨论】:

    标签: javascript object scope


    【解决方案1】:

    global 的值是对对象的引用。

    在您的函数中,将该引用复制到local

    然后更改该对象的prop 属性的值。

    由于globallocal 引用相同的对象,global.proplocal.prop 将始终是相同的值。

    有关如何创建对象副本而不是引用副本的详细信息,请参阅this other question

    【讨论】:

    • 谢谢,我想我明白了 :-)
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2019-07-24
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多