【发布时间】:2020-11-09 13:00:51
【问题描述】:
我是面向对象的 Javascript 的新手,并创建了一个名为 Foo 的对象(基于一个类)和一个名为按钮的对象。要调用按钮,我可以键入
console.log('foo log: ',foo.buttons)
//foo log: testButton1
我想通过将 foo 替换为名为 myVar 的变量来替换 call foo.buttons。它必须很简单,但我能看到的解决方案似乎都不适用于我的情况。我认为可能存在范围问题,但不明白它是什么。
我已经尝试过什么
class TestClass {
constructor(
button)
{this.button = button}
}
const myVar = 'foo'
const foo = new TestClass ('testButton1')
console.log('foo log: ', foo.button)
//foo log: testButton1
console.log('myVar: ', myVar)
//foo
console.log('Attempt1: ', [myVar].button)
//Attempt1: undefined
//console.log('Attempt2: ', [myVar]button)
// failed to compile
console.log('Attempt3: ', myVar.button)
//Attempt3: undefined
console.log('Attempt4: ', (myVar).button)
//Attempt4: undefined
console.log('this:', this)
【问题讨论】:
-
"我想通过将 foo 替换为名为 myVar 的变量来替换 call foo.buttons" - 为什么?
-
如果您使用
var将其声明为全局变量,您可以使用window[myVar]。只要您的范围是window或任何您指定的范围。 -
我有一个来自另一个组件的道具,我希望使用该道具 myVar 来查找与其相关的对象,以便稍后在程序中使用它
-
不知道是谁关闭的,所以无法给出正确答案。在我看来,最好的方法是绘制你的案例。类似:
const options = { foo: new TestClass('testButton1'), bar: new TestClass('testButton2'), baz: new TestClass('testButton3') }。然后你用options[myVar].button得到它
标签: javascript object scope