在查看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;
的方法)排除在外。
答案 0 :(得分:0)
没有办法剔除沉重的行为
使用函数引用而不是匿名函数:
proto.createdCallback = model.foo;
定义它:
var model = {};
model.foo = function(){/*some heavy operation*/};
然后通过重新定义来存根:
var XModel = {};
XModel.foo = function(){/*stub*/};
并在测试中引用它:
XFoo.createdCallback = XModel.foo;
<强>参考强>
答案 1 :(得分:0)
如果您引用了自定义元素的构造函数,则可以使用它来访问原型。
var XFoo = document.registerElement('x-foo', {prototype: proto});
XFoo.prototype // this will give u access to the prototype object.