いくつかのHTML要素のラッパークラスの作成に取り組んでいますが、.appendChildが呼び出されたときにクラスのデフォルト動作を指定する方法があるかどうかを知りたいと思いますその上に。オブジェクトのappendchildが呼び出されたときのデフォルトの動作を作成します。
// Very simple textbox wrapper class
function MyWrapperClass(){
this.input = document.createElement('input'); // textbox
}
MyWrapperClass.prototype.setValue = function(v){
this.input.value = v;
}
// Add instance of my wrapper class to DOM
var foo = new MyWrapperClass();
document.body.appendChild(foo.input); // Works fine.
これで十分です。しかし、私はこれを取得するのに十分な抽象私のコードにしようとしている:のappendChildは、FOOに呼び出されたときfoo.inputが自動的に返され
// Add instance of my wrapper class to DOM
var foo = new MyWrapperClass();
document.body.appendChild(foo);
。
さて、私はそれで入力要素が機能を構築していますが、私はそれを行うとき、私はクラスのメソッドを呼び出すための能力を失う返すために私のラッパークラスを変更することができることを実現:
// Modified wrapper, returns input on instancing
function MyWrapperClass(){
this.input = document.createElement('input'); // textbox
return this.input
}
var foo = new MyWrapperClass();
foo.setValue('Hello'); // ERROR: html input element has no setValue method
では、オブジェクトのデフォルトの動作をオーバーライドし、.appendChildがfooで呼び出されたときにfoo.inputを返す方法はありますか?
Ah!いい案!/*額のスラップ*/ クラスのappendTo(要素)メソッドを書くことができます。それは私が元々持っていたものよりずっときれいです。ありがとう!!! –
はい。単一のメソッドappend()を使用して、要素がメソッドに渡されない場合はdocument.bodyをデフォルトノードとして使用できます – fcalderan