我試圖讓我直接在腦海中做jQuery風格的函數鏈接的原則。我的意思是:基本對象/函數鏈接如何在JavaScript中工作?
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();
函數不返回它們自己,它們返回支持您鏈接的方法的對象。在jQuery的情況下,它是正在運行的節點。 – drudru 2009-07-08 18:00:52
讓每個函數以`return this;`結尾。 – 2012-06-10 01:30:46
@MarcB - 我知道,但是怎麼樣? – 2012-06-10 01:31:32