有没有办法在ES6 Javascript中访问内部抽象操作?

时间:2017-11-12 10:12:19

标签: javascript ecmascript-6 prototype abstract

ES6规范声明abstract operations不是语言的一部分,但它们在内部使用。其中一些操作,例如CreateHTML看起来通常很有用......是否真的无法访问它们?没有深入的原型hackery来获得这些功能?

1 个答案:

答案 0 :(得分:2)

当一个人描述编程语言/ API的语义时,确保一切正确且非模糊是非常重要的。想象一下,您现在正在描述String.prototype.fontcolor(color)应该如何运作。这是您需要定义的API的一部分,因此您必须严格遵守它并开始列出要求:

  1. 如果字符串为空,则......
  2. 如果颜色为空,那么......
  3. 如果颜色不是有效颜色,那么......
  4. ...
  5. 现在,如果您对多个函数有重复的要求,那么您可以概括这些要求,并告诉任何正在实施标准的人将要求应用于其他一些函数(例如'要求1和2也适用于{{1 }}“)。您可以使用抽象操作来定义公共API操作,而不仅仅是说“要求1和2也适用于......” '调用RequirementsForStringPrototypeAcceptingOneArgument并退出,如果它返回false',其中 RequirementsForStringPrototypeAcceptingOneArgument 包含req。 1和2。

    请注意,这些要求本身不是API的一部分。没有设计,也没有必要 - 只有一种工具可以避免标准中的重复。实现可能真的选择在某个地方使用String.prototype.fontsize函数,但如果他们认为更好,也可以放一堆CreateHTML语句。因此,不,没有办法以

    的形式访问这些操作
    1. 首先,实施可能没有这样的功能。
    2. 实施没有理由公开它们。
    3. 即使他们确实公开了一些帮助内部函数,他们也没有理由用标准中提到的名称公开它,或者让它与标准中完全相同 - 这是实现的所有内部细节。