Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么下面的代码不更改Node.js中“我的对象”中的属性_Javascript_Node.js - Fatal编程技术网

Javascript 为什么下面的代码不更改Node.js中“我的对象”中的属性

Javascript 为什么下面的代码不更改Node.js中“我的对象”中的属性,javascript,node.js,Javascript,Node.js,假设我设置test2.js如下 module.exports.doPrint = doPrint; var dummy = "initial"; function doPrint(callback) { setInterval(function() { console.log(dummy); callback(); }, 1000); } 然后是test1.js var test2 = require("./test2"); test2

假设我设置test2.js如下

module.exports.doPrint = doPrint;

var dummy = "initial";

function doPrint(callback) {
    setInterval(function() {
        console.log(dummy);
        callback();
    }, 1000);   
}
然后是test1.js

var test2 = require("./test2");
test2.doPrint(function() {
    console.log("changing");
    test2.dummy = "new value";
});
当我运行test1.js时,我得到以下结果

initial
changing
initial
changing

换句话说,test2.js中dummy的值永远不会更改为新值。有人能解释一下这里发生了什么吗?

它不会改变值,因为
dummy
是一个局部变量(不能从外部访问-本地变量将是私有的)。要使其正常工作,您可以将
test2.js
更改为:

module.exports.doPrint = doPrint;

function doPrint(callback) {
    var that=this;
    this.dummy = "initial";
    setInterval(function() {
        console.log(that.dummy);
        callback();
    }, 1000);   
}

或使用:

test2.set(“新值”)
更改值(如果希望它是局部变量)

module.exports.doPrint = doPrint;
module.exports.get = get;
module.exports.set = set;

var dummy = "initial";

function get(){
    return dummy
}

function set(new_value){
    dummy=new_value;
}


function doPrint(callback) {
    setInterval(function() {
        console.log(dummy);
        callback();
    }, 1000);   
}