1

カスタム要素の仕様を見た後、最初にインスタンス化せずにカスタム要素定義への参照を取得する方法がすぐにはわかりません (これは問題になる可能性があります)。カスタム要素のプロトタイプを直接参照する方法はありますか?

より具体的には、次の場合:

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;。元のメソッドが実際に呼び出される前に、重い動作をスタブ化する方法がないためです。

4

2 に答える 2

0

カスタム要素のコンストラクターへの参照がある場合は、それを使用してプロトタイプにアクセスできます。

var XFoo = document.registerElement('x-foo', {prototype: proto});
XFoo.prototype // this will give u access to the prototype object. 
于 2015-04-14T14:57:40.693 に答える