我试图在我的脑海中直接了解做 jQuery 风格的函数链的原则。我的意思是:
var e = f1('test').f2().f3();
我有一个例子可以工作,而另一个没有。我会在下面发布这些。我总是想学习一些东西如何运作的第一原则基础,这样我就可以在它的基础上进行构建。到目前为止,我对链接的工作原理只有粗略和松散的理解,而且我遇到了无法智能排除故障的错误。
我知道的:
- 函数必须返回自己,也就是“返回这个;”
- 可链接的函数必须驻留在父函数中,也就是在 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();