javascript更改对象变量引用

标签 javascript object reference


我是 javascript 新手,有人可以解释一下为什么这段代码不起作用吗?

var User = function () {
    var userId = 0;
    var clear = function () {
        userId = 0;
    }
    return{
        clear:clear,
        userId:userId,
    }
}

...
// in mocha test:

var john = new User();
john.userId = 666;
john.userId.should.equal(666); // true
john.clear()
john.userId.should.equal(0); // false

问候

最佳答案

您所做的就是创建一个 function closure 。这意味着在 clear 函数内,userId 被创建为局部变量,并且其作用域与全局 User.userId 分开。

您需要做的是使用 this 关键字来指定您尝试更改的 userId 是全局的。

var User = function () {
    var userId = 0;
    var clear = function () {
        this.userId = 0;
    }
    return{
        clear:clear,
        userId:userId,
    }
}

关于javascript更改对象变量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44761758/

相关文章:

Javascript 在文本中查找单词并动态改变颜色

c# - 为对象类型添加值 c#

rust - 为什么不能在同一结构中存储值和对该值的引用?

javascript - 使用 Firefox 扩展从网站保存文本,保存了错误的字符

javascript - 使用 javascript 从 HTML 转换为文本时出现问题

java - 如何为井字游戏逻辑引用 JButtons 对象(Java 中的井字游戏)

java - 对象为 null,尽管已初始化

C++将取消引用的对象推送到 vector

使用预定义参数引用 C++ 函数

javascript - 为什么一些 jQuery 程序员使用 jQuery 函数,如 $.get、$.getJSON 和 $.when 而不是 $.ajax