Python';在我的javascript代码中,getattr的等效值是多少?
我正在关注一篇用python编写的文章,我正在尝试实现同样的东西,但在javascript中,我只是在他使用Python';在我的javascript代码中,getattr的等效值是多少?,javascript,python,Javascript,Python,我正在关注一篇用python编写的文章,我正在尝试实现同样的东西,但在javascript中,我只是在他使用getattr时没有取消对该部分的绑定。 我认为这类似于node.constructor.name,但我不确定,因为我不明白他如何调用visitor(node) 为了进一步了解它并查看代码的其余部分,下面是从对象中获取属性(即.foo),将属性名称指定为字符串。因此getattr(o,'foo')相当于o.foo。第三个参数是默认值,如果对象没有该属性,将返回该值 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)
请注意,您必须注意正确传播
此
。我在这里对你们的班级结构做了很多假设,但像这样的假设应该可以。完美的假设和完美的答案!完美的假设和完美的答案!