Я работаю над созданием классов-оболочек для некоторых элементов HTML, и я хотел бы знать, есть ли способ указать поведение по умолчанию для моего класса, когда для него вызывается .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 автоматически возвращается при вызове 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
Так есть ли способ переопределить поведение объекта по умолчанию и вернуть foo.input при вызове .appendChild для foo?