import { immutable } from '../../decorators'; import { ExpressionNode, LOGIC_TYPE } from '../LogicItem'; /** * 成员表达式 * @TODO: 当前类目前主要用于生成文档 */ export class MemberExpression extends ExpressionNode { /** * 逻辑节点类型 */ @immutable() public readonly type: LOGIC_TYPE = LOGIC_TYPE.MemberExpression; /** * 对象 */ @immutable() public readonly object: ExpressionNode = undefined; /** * 属性 */ @immutable() public readonly property: ExpressionNode = undefined; /** * 生成 JS 脚本 */ toScript() { if (String(this.property.type).endsWith('Literal')) return `${this.object.toScript()}[${this.property.toScript()}]`; else // 生成代码尽量简洁一些,目前属性没有特殊字符的情况 return `${this.object.toScript()}.${this.property.toScript()}`; } }