underscoer.js のような小さな js フレームワークを作成しました。メソッド呼び出しは によって実行されmc_.grep([1,2,3,4], function(val){ return val > 2; });
ます。どうすれば jQuery スタイルに近づけることができmc_(var).grep(func..).map(func..);
ますか? 何か案は?また、ライブラリを改善するにはどうすればよいですか?
3 に答える
関数から戻るたびに関数呼び出しを連鎖させたい場合は、次のメソッドをフレームワークの中心にある基本オブジェクト内にラップして返す必要があります。返されたオブジェクト。
たとえば (これは非常に基本的なことです)、$('#someid')
呼び出しは jQuery によって次のように返されます。
this.length = 1;
this[0] = elem;
}
this.context = document;
this.selector = selector;
return this;
There's a good article available on wikipedia called "Method chaining".
An oversimplified example of chaining, also available as a working jsfiddle (just open console with F12 to see the result) would be as follows:
var a = {
b: function () {
console.log('b');
// Make method chainable:
return this;
},
c: function () {
console.log('c');
// Make method chainable:
return this;
}
};
// Now you can do:
a.b().c();
I recommend taking a look at the annotated source code of underscore.js to avoid the feeling "oh damn, I've spent so much time reinventing a wheel".
How to improve? There's only one way I know: make it useful.