$$アプローチと同様に、記憶パターンを使用してグローバルをクリーンに保ち、$$( "。class"、 "#context"などの2番目のコンテキストパラメーターも考慮する)関数を作成しました。 )。これは、$$が返された後に発生する連鎖関数find()を使用する場合に必要です。したがって、最初にコンテキストオブジェクトをキャッシュしない限り、単独でキャッシュされることはありません。また、ブールパラメータを最後に追加して(コンテキストを使用するかどうかに応じて2番目または3番目のパラメータ)、強制的にDOMに戻します。
コード:
function $$(a, b, c){
var key;
if(c){
key = a + "," + b;
if(!this.hasOwnProperty(key) || c){
this[key] = $(a, b);
}
}
else if(b){
if(typeof b == "boolean"){
key = a;
if(!this.hasOwnProperty(key) || b){
this[key] = $(a);
}
}
else{
key = a + "," + b;
this[key] = $(a, b);
}
}
else{
key = a;
if(!this.hasOwnProperty(key)){
this[key] = $(a);
}
}
return this[key];
}
使用法:
<div class="test">a</div>
<div id="container">
<div class="test">b</div>
</div>
<script>
$$(".test").append("1"); //default behavior
$$(".test", "#container").append("2"); //contextual
$$(".test", "#container").append("3"); //uses cache
$$(".test", "#container", true).append("4"); //forces back to the dome
</script>