Python';在我的javascript代码中,getattr的等效值是多少?

Python';在我的javascript代码中,getattr的等效值是多少?,javascript,python,Javascript,Python,我正在关注一篇用python编写的文章,我正在尝试实现同样的东西,但在javascript中,我只是在他使用getattr时没有取消对该部分的绑定。 我认为这类似于node.constructor.name,但我不确定,因为我不明白他如何调用visitor(node) 为了进一步了解它并查看代码的其余部分,下面是从对象中获取属性(即.foo),将属性名称指定为字符串。因此getattr(o,'foo')相当于o.foo。第三个参数是默认值,如果对象没有该属性,将返回该值 Javascript中的

我正在关注一篇用python编写的文章,我正在尝试实现同样的东西,但在javascript中,我只是在他使用
getattr
时没有取消对该部分的绑定。 我认为这类似于
node.constructor.name
,但我不确定,因为我不明白他如何调用
visitor(node)


为了进一步了解它并查看代码的其余部分,下面是从对象中获取属性(即
.foo
),将属性名称指定为字符串。因此
getattr(o,'foo')
相当于
o.foo
。第三个参数是默认值,如果对象没有该属性,将返回该值

Javascript中的等效项是:

o['foo'] || bar
您可以在此处为
'foo'
使用任何变量。如果
o
没有该属性,则返回
undefined
(在Python中它将引发
AttributeError
,在Javascript中它只生成
undefined
),此时
|
操作符将返回其第二个操作数

把它放在一起,比如:

const methodName = `visit_${ node.constructor.name }`;
const visitor = this[methodName] || this.genericVisit;
return visitor.call(this, node)

请注意,您必须注意正确传播
。我在这里对您的类结构做了很多假设,但类似的事情应该可以做到。

getattr
从对象中获取属性(即
.foo
),将属性名称作为字符串给定。因此
getattr(o,'foo')
相当于
o.foo
。第三个参数是默认值,如果对象没有该属性,将返回该值

Javascript中的等效项是:

o['foo'] || bar
您可以在此处为
'foo'
使用任何变量。如果
o
没有该属性,则返回
undefined
(在Python中它将引发
AttributeError
,在Javascript中它只生成
undefined
),此时
|
操作符将返回其第二个操作数

把它放在一起,比如:

const methodName = `visit_${ node.constructor.name }`;
const visitor = this[methodName] || this.genericVisit;
return visitor.call(this, node)

请注意,您必须注意正确传播
。我在这里对你们的班级结构做了很多假设,但像这样的假设应该可以。

完美的假设和完美的答案!完美的假设和完美的答案!