$(this).val()
cookieUtil.set();
在 javascript 中,call 和 apply 都是為了改變某個函數(shù)運行時的上下文(context)而存在的,換句話說,就是為了改變函數(shù)體內(nèi)部 this 的指向。傳入多少個參數(shù)是不確定的,所以使用apply是最好的.
通常我們會使用 _this , that , self 等保存 this
JavaScript 的一大特點是,函數(shù)存在「定義時上下文」和「運行時上下文」以及「上下文是可以改變的」這樣的概念。
functionfruits() {}
fruits.prototype = {
color:"red",
say:function() {
console.log("My color is "+this.color);
}
}
varapple =newfruits;
apple.say();//My color is red
但是如果我們有一個對象banana= {color : "yellow"}?,我們不想對它重新定義 say 方法,那么我們可以通過 call 或 apply 用 apple 的 say 方法:
banana = {
color:"yellow"
}
apple.say.call(banana);//My color is yellow
apple.say.apply(banana);//My color is yellow
所以,可以看出 call 和 apply 是為了動態(tài)改變 this 而出現(xiàn)的,當(dāng)一個 object 沒有某個方法(本栗子中banana沒有say方法),但是其他的有(本栗子中apple有say方法),我們可以借助call或apply用其它對象的方法來操作。
apply 、 call 、bind 三者都是用來改變函數(shù)的this對象的指向的;
apply 、 call 、bind 三者第一個參數(shù)都是this要指向的對象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后續(xù)參數(shù)傳參;
bind?是返回對應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。