jQuery スタイルの関数チェーンの原則を頭の中で真っ直ぐに理解しようとしています。これにより、次のことを意味します。
var e = f1('test').f2().f3();
1 つの例が機能するようになりましたが、別の例は機能しません。以下にそれらを掲載します。私は常に、何かがどのように機能するかの第一原則の基礎を学び、その上に構築できるようにしたいと考えています。これまで、連鎖がどのように機能するかについて大雑把で大まかな理解しかできておらず、インテリジェントにトラブルシューティングできないバグに遭遇しています。
私が知っていること:
- 関数は自分自身を返す必要があります。別名「これを返す」です。
- 連鎖可能な関数は、親関数、別名 jQuery に存在する必要があります。.css() は jQuery() のサブメソッドであるため、jQuery().css();
- 親関数は、それ自体またはそれ自体の新しいインスタンスを返す必要があります。
この例はうまくいきました:
var one = function(num){
this.oldnum = num;
this.add = function(){
this.oldnum++;
return this;
}
if(this instanceof one){
return this.one;
}else{
return new one(num);
}
}
var test = one(1).add().add();
しかし、これはそうではありません:
var gmap = function(){
this.add = function(){
alert('add');
return this;
}
if(this instanceof gmap) {
return this.gmap;
} else{
return new gmap();
}
}
var test = gmap.add();