0

在 Web Components工作草案(第5.2节)中,我偶然发现了这个结构:

<element name="tick-tock-clock">
  <script>
    ({
      tick: function () {
        …
      }
    });
  </script>
</element>

当以这种方式使用时,我可以引用tickvia this( this.tick)——至少在同一个脚本元素中——参见5.3的例子。

这个结构({ tick: ... })叫什么?这个怎么运作?这是哪个规范的一部分?


澄清:我的问题是为什么this.tick假定工作?我无法重现它以在浏览器中工作。


编辑:正如W3C 的 webapps 邮件列表中的这封电子邮件中所述,我所指的部分规范现在已经过时,部分原因是this-> 我所询问的原型绑定。

4

2 回答 2

1

这个构造 ({ tick: ... }) 叫什么?

一个对象初始化器

这个怎么运作?

对象初始化器由一系列属性初始化器( name: value) 组成。每个属性初始值设定项中的值都会被评估,然后分配给属性。你的tick属性的值是一个函数,但它很容易是一个字符串、数字、另一个对象等等。

这是哪个规范的一部分?

对象初始化器来自 ECMAScript 规范(ECMAScript 是我们都称为 JavaScript 的标准化语言的技术名称)。当前规范是第 5 版,但对象初始化器从一开始就在那里。

从该对象初始化程序中获取属性并将它们添加到元素对象的部分来自该规范,即 Web 组件规范。见第 5.2 节

脚本最后一个值的属性将被复制到为您创建的原型对象中。在上面的例子中,<tick-tock-clock>元素会有一个 tick 方法。

于 2013-10-01T07:28:40.853 回答
1

出于各种性能和平台可行性的原因,Web Components Custom Elements 规范无限期地搁置了<element>定义自定义元素的声明性方法。相反,您应该使用命令式document.register()DOM API 来声明您的自定义元素,如此处最新规范中所述:https ://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom /index.html

注意:我是这个系列规范的工作组的参与者——其中的实现计划在 2013 年底左右登陆 Chrome 和 Firefox)

于 2013-10-15T16:44:34.413 回答