關(guān)鍵詞:鏈?zhǔn)秸{(diào)用
我們都很熟悉jQuery了怖侦,只能jQuery中一種非常牛逼的寫法叫鏈?zhǔn)讲僮?/p>
* $('#div').css('background','#ccc').removeClass('box').stop().animate({width:300})
那這是如何實(shí)現(xiàn)的呢裕坊,我自己寫了個(gè)例子:并非jQuery源碼
Ferrinte.prototype.show=function () {
for(var i=0;i<this.elements.length;i++)
{
this.elements[i].style.display='block';
}
return this;
};
Ferrinte.prototype.hide=function () {
for(var i=0;i<this.elements.length;i++)
{
this.elements[i].style.display='none';
}
return this;
};
其實(shí)很簡(jiǎn)單就是通過(guò)return this實(shí)現(xiàn)的,當(dāng)某個(gè)函數(shù)執(zhí)行完畢,在把執(zhí)行的結(jié)果返回,這樣其他的函數(shù)就能繼續(xù)調(diào)用了
原生js也是支持鏈?zhǔn)秸{(diào)用的向族,比如說(shuō):
var arr = [1,2,3,4,5];
arr.reverse().join("").split();
console.log(arr);
在原生js中,鏈?zhǔn)秸{(diào)用還可以這樣用
function show(str) {
console.log(str);
return show;
}
show(123)(456)(789);
// 控制臺(tái)打印結(jié)果
// 123
// 456
// 789
我們發(fā)現(xiàn)棠绘,不寫函數(shù)名稱只寫()也可以實(shí)現(xiàn)函數(shù)執(zhí)行件相,那我們這樣寫可以不可以呢
function show(str) {
console.log(str);
return show;
}(123)
原則上是可以的,但是這樣不符合js語(yǔ)法氧苍,會(huì)報(bào)錯(cuò)
我們給函數(shù)外加上括號(hào)
(function show(str) {
console.log(str);
return show;
})(123)
這樣就OK了夜矗,一個(gè)自執(zhí)行的函數(shù)
但是這樣寫在嚴(yán)格模式
下回報(bào)錯(cuò),我們把函數(shù)賦值給一個(gè)變量就好了
var a = (function show(str) {
console.log(str);
return show;
})(123)
*注意:自執(zhí)行函數(shù)不會(huì)被內(nèi)存機(jī)制回收