jQuery の動作と同様に、実際の DOM を拡張せずに独自の DOM メソッドを作成するコードをいくつか試しています。これはこれまでの私のプロトタイプです:
function Lib( selector ) {
this.el = this._query( selector );
}
Lib.prototype = {
_query: document.querySelectorAll.bind( document ),
_each: function( fn ) {
return [].forEach.call( this.el, fn );
},
hide: function() {
this._each(function( el ) {
el.style.display = 'none';
});
return this;
},
show: function() {
this._each(function( el ) {
el.style.display = 'block';
});
return this;
},
toggle: function() {
this._each(function( el ) {
var hidden = el.style.display == 'none';
el.style.display = hidden ? 'block' : 'none';
});
return this;
}
};
function $( selector ) {
return new Lib( selector );
}
$('div').toggle();
this
ご覧のとおり、メソッドをチェーンできるようにするには、戻り続ける必要があります。私の脳は今死んでいます。これを自動化する方法が思いつきません。助言がありますか?