阅读(1007) (0)

引用规范类型

2017-06-16 15:04:35 更新

引用类型用来说明 delete,typeof,赋值运算符这些运算符的行为。例如,在赋值运算中左边的操作数期望产生一个引用。通过赋值运算符左侧运算子的语法案例分析可以但不能完全解释赋值行为,还有个难点:函数调用允许返回引用。承认这种可能性纯粹是为了宿主对象。本规范没有定义返回引用的内置 ECMAScript 函数,并且也不提供返回引用的用户定义函数。(另一个不使用语法案列分析的原因是,那样将会影响规范的很多地方,冗长并且别扭。)


一个 引用 (Reference) 是个已解决的命名绑定。一个引用由三部分组成, 基 (base) 值, 引用名称(referenced name) 和布尔值 严格引用 (strict reference) 标志。基值是 undefined, 一个 Object, 一个 Boolean, 一个 String, 一个 Number, 一个 environment record 中的任意一个。基值是 undefined 表示此引用可以不解决一个绑定。引用名称是一个字符串。


本规范中使用以下抽象操作接近引用的组件:

  • GetBase(V)。 返回引用值 V 的基值组件。
  • GetReferencedName(V)。 返回引用值 V 的引用名称组件。
  • IsStrictReference(V)。 返回引用值 V 的严格引用组件。
  • HasPrimitiveBase(V)。 如果基值是 Boolean, String, Number,那么返回 true。
  • IsPropertyReference(V)。 如果基值是个对象或 HasPrimitiveBase(V) 是 true,那么返回 true;否则返回 false。
  • IsUnresolvableReference(V)。 如果基值是 undefined 那么返回 true,否则返回 false。


本规范使用以下抽象操作来操作引用: