1
我正在爲某些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.
這很好。但我試圖抽象我的代碼足以達到這個:
// Add instance of my wrapper class to DOM
var foo = new MyWrapperClass();
document.body.appendChild(foo);
其中foo.input自動返回時,當在foo上調用appendChild。現在
,我意識到,我可以修改我的包裝類返回輸入元素在它的構造函數,但是當我這樣做,我失去調用任何類方法的能力:
// 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
那麼在foo上調用.appendChild時,有什麼方法可以覆蓋對象的默認行爲並返回foo.input?
啊!好想法!/*前額巴掌*/ 我可以爲該類編寫appendTo(element)方法。這比我原來的要乾淨得多。謝謝!!! – 2012-01-27 20:08:59
是的。如果沒有元素傳遞給方法,可以使用單個方法append()並將document.body用作默認節點 – fcalderan 2012-01-27 20:12:16