【发布时间】:2019-01-30 15:11:43
【问题描述】:
如何从本地范围内获取所有变量?例如:
x=1;
class testit {
constructor (){
this.a='two';
}
}
var t1=new testit;
var missing = new testit;
var missing2 = 1;
var vars = Object.keys(global);
console.log(vars)
将打印 x,但不打印其他已定义的变量。
编辑:我们已经确定了以下解决方案,任何 cmets ?
为了允许使用这种类型的概念,允许程序跟踪我们所有的类实例,而不会在全局添加中出现人为错误,我们现在继承了一个基类:
"use strict";
global.childClasses = [];
class BaseClass {
constructor(){
global.childClasses.push(this);
}
static print(){
console.log(global.childClasses);
}
}
module.exports = {
BaseClass
}
我们现在可以通过调用基类的静态方法来列出所有实例,就像在这个 testExample.js 文件列表中一样:
"use strict";
let BaseClass = require('./baseClass').BaseClass;
class Test1 extends BaseClass {}
let test1 = new Test1;
class Test2 extends BaseClass {}
let test2 = new Test2;
BaseClass.print();
哪些输出:
$ node ./testExample.js
[ Test1 {}, Test2 {} ]
【问题讨论】:
-
是的,这是因为只有 x 是全局的而不是其他的。
标签: javascript node.js variables scope