我知道(或者我认为我知道(JavaScript 中的作用域是如何工作的,所以我想这是不可能的,但是:有没有办法在类实例中获取块(函数(作用域变量?
class Test {
run() {
const running = true;
}
}
const test = new Test();
test.run();
console.log(?) -> here I would like to get info that `running` variable was created
我无法在测试类中创建另一个函数。我刚刚有了实例。
仅供参考:我尝试解决的问题更广泛,与第 3 方库有关。
除非您更改函数run
否则无法访问其中的属性。如果您使用的是第 3 方代码,这很难,但可能的解决方案是通过扩展类来覆盖该方法(您需要非常确定第三方代码不会改变太多(:
class ConcreteTest extends Test {
run() {
// option A
this.running = true
// option B
return true;
// or use both A and B
}
}
run 函数将被覆盖,因此这取决于这是一个合适的解决方案还是有效的解决方案。
您的库是否提供任何 API 或解决方法来解决您的问题?
我知道JavaScript中的作用域是如何工作的,所以我想这是不可能的
确实是的。这就是块作用域的含义:变量仅适用于该块中的代码,即在run
方法的{ … }
大括号之间。
test.run(); console.log(?) // here I would like to get info that `running` variable was created
不,这是不可能的。请注意,running
变量在 .run()
调用结束后甚至不再存在。
使true
值可供外部使用的唯一方法是更改run
方法,例如,使其成为对象属性而不是局部变量。
var app = { running: true };
var Test = { run: function() { return app.running; } };
var testInstance = new Test();
var testRunMethod = testInstance.run; testRunMethod();
RUN 方法可以是测试对象的属性,因此可以复制和重用。