【发布时间】:2014-11-17 19:32:53
【问题描述】:
查看custom element spec 后,我如何在不先实例化自定义元素定义的情况下获得对它的引用并不立即显而易见(这可能会出现问题)。有没有办法直接引用自定义元素的原型?
更具体地说,如果我有:
var proto = Object.create(HTMLElement.prototype);
proto.createdCallback = function() { // some heavy operation };
document.registerElement('x-foo', {prototype: proto});
稍后,我想引用原型,例如:
// wish
var XFoo = document.getElementDefinition('x-foo');
但我想出的唯一方法是:
// reality
var XFoo = document.createElement('x-foo').__proto__;
这在尝试编写针对重型组件的测试时尤其成问题 - 因为没有办法消除重型行为(在实际调用原始方法之前使用 XFoo.createdCallback = // stub; 之类的东西。
【问题讨论】:
-
由于原型被所有实例共享,只需在某处保留对该对象的引用即可。
-
@Pointy 肯定会起作用。当外部库代表我注册组件时(例如 Google Polymer),这会更加困难。所以问题仍然存在:当我无法控制
registerElement代码时,如何查找定义?这就是我在这里寻找的核心。
标签: unit-testing reference web-component stub custom-element