我知道(或者我认为我知道)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
我无法在Test类中创建另一个函数。我刚刚得到了这个实例。
仅供参考:我试图解决的问题更广泛,与第三方库有关。
答案 0 :(得分:1)
$('#advent').click(function () {
$("#arrow", this).toggleClass("fa-minus-circle");
$('#expand').slideToggle();
});
app.running可以是全局访问的交换机。 run方法可以是测试对象的属性,因此可以复制和重用。
答案 1 :(得分:1)
除非您更改功能run
,否则您无法访问该属性。如果您正在使用第三方代码,那很难,但可能的解决方案是通过扩展类来覆盖该方法(您需要非常确定第三方代码不会改变那么多):
class ConcreteTest extends Test {
run() {
// option A
this.running = true
// option B
return true;
// or use both A and B
}
}
运行函数将被覆盖,因此它取决于它是否是适当的或有效的解决方案。
您的图书馆不提供任何API或解决方法来解决您的问题吗?
答案 2 :(得分:1)
确实是的。这就是阻止范围意味着:该变量仅对该块中的代码可用,即在我知道JavaScript中的范围如何工作所以我认为这是不可能的
{ … }
方法的run
大括号之间。
test.run(); console.log(?) // here I would like to get info that `running` variable was created
不,那是不可能的。请注意,running
调用结束后.run()
变量甚至不再存在。
将true
值提供给外部的唯一方法是更改run
方法,例如通过使它成为对象属性而不是局部变量。