在网络组件working draft(5.2部分)中,我偶然发现了这个结构:
<element name="tick-tock-clock">
<script>
({
tick: function () {
…
}
});
</script>
</element>
以这种方式使用时,我可以通过tick
(this
)引用this.tick
- 至少在同一个脚本元素中 - 例如,请参阅5.3。
这个构造({ tick: ... })
被称为什么?这个怎么运作?其中一部分规格是什么?
澄清:我的问题是为什么this.tick
被认为有效?我无法重现它在浏览器中工作。
编辑,我所引用的规范的一部分现已过时,部分原因是this
- &GT;我问的原型装订。
答案 0 :(得分:1)
这个构造({tick:...})叫什么?
它如何运作?
对象初始值设定项由一系列属性初始值设定项(name: value
)组成。将评估每个属性初始值设定项中的值,然后将其分配给该属性。 tick
属性的值是一个函数,但它可以很容易地是一个字符串,数字,另一个对象,等等。
其中一部分规格是什么?
对象初始化程序来自ECMAScript规范(ECMAScript是我们称之为JavaScript的标准化语言的技术名称)。 current spec is the 5th edition但对象初始值设定项从一开始就存在。
从该对象初始化程序获取属性并将它们添加到元素对象的部分来自该规范,Web组件规范。见Section 5.2:
脚本最后一个值的属性将被复制到为您创建的原型对象中。在上面的示例中,
<tick-tock-clock>
元素将具有tick方法。
答案 1 :(得分:1)
Web组件自定义元素规范无限期搁置了声明<element>
方法,用于定义各种性能和平台可行性原因的自定义元素。相反,您应该使用命令式document.register()
DOM API来声明自定义元素,如最新规范中所述:https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html
(注意:我是该系列规范工作组的参与者 - 其中,实施计划于2013年底落实到Chrome和Firefox中)