jqueryをES6クラスに拡張しようとしています。継承されたjQuery関数を呼び出すたびにすべてが実際に動作しますが、jQueryは毎回コンストラクタを呼び出すようです。これはこのフィドルで明らかです。またtrigger
は4回呼ばれるようです。各メソッド呼び出しでjQueryがコンストラクタを呼び出す
(transpiledコード) https://jsfiddle.net/w3bbzgrn/1/
これはあなたが現在のコールスタックをダンプするvar stack = new Error().stack
を使用して、コンストラクタが二回呼び出される理由を見ることができ、ソースコード
class Popup extends jQuery.fn.init {
constructor(t) {
super(t);
this.init(t);
return this;
}
test(){
this.trigger('test', 55)
return this
}
}
class Foo extends Popup{
constructor(t){
super(t)
console.log("I get called")
return this
}
}
var t = $('<div>hi</div>')
var f = new Foo(t);
f.on('test', function(e,args){
console.log(args)
})
f.appendTo('body').test().slideUp()
ここで、より高いレベルの目的は何ですか?どのような問題を解決しようとしていますか?これはjQueryのプラグインを作成する方法ではありません – charlietfl
'jQuery.fn.init'を拡張したい理由を理解していません – charlietfl
私の意図は、テーブルジェネレータのようなものを提供することです。ビルド、 update、addRowなど)、appendTo、slideUpなどのすべてのjQuery関数を継承します。これは、テーブルのラッパー要素に適用されます。 – BarryBones41