【发布时间】:2019-03-01 10:13:09
【问题描述】:
我真的不明白为什么我们需要在下面的代码中按位应用AND by BindingFlags.Types:
switch (binding.flags & BindingFlags.Types) {
case BindingFlags.TypeElementAttribute:
setElementAttribute(view, binding, renderNode, binding.ns, name, value);
break;
case BindingFlags.TypeElementClass:
setElementClass(view, renderNode, name, value);
break;
case BindingFlags.TypeElementStyle:
setElementStyle(view, binding, renderNode, name, value);
break;
case BindingFlags.TypeProperty:
const bindView = (def.flags & NodeFlags.ComponentView &&
binding.flags & BindingFlags.SyntheticHostProperty) ?
elData.componentView :
view;
setElementProperty(bindView, binding, renderNode, name, value);
break;
}
这是BindingFlags的定义:
export const enum BindingFlags {
TypeElementAttribute = 1 << 0,
TypeElementClass = 1 << 1,
TypeElementStyle = 1 << 2,
TypeProperty = 1 << 3,
SyntheticProperty = 1 << 4,
SyntheticHostProperty = 1 << 5,
CatSyntheticProperty = SyntheticProperty | SyntheticHostProperty,
// mutually exclusive values...
Types = TypeElementAttribute | TypeElementClass | TypeElementStyle | TypeProperty
}
有人可以澄清一下吗?
【问题讨论】:
-
这取决于
binding.flags可以假设的值。请告诉我们好吗?您认为位掩码是多余的还是您不明白的地方?
标签: javascript typescript bitmask