apply call

$(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)用 。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,675評論 0 4
  • 后記,勉強算是個正果 老夫子:沒天賦又不努力的結(jié)果 Book wanted read again What: A ...
    楊小邪yxr閱讀 1,430評論 0 0
  • Effective TensorFlow Table of Contents TensorFlow Basics ...
    法布雷加嘻閱讀 701評論 0 1
  • Anatomy of matplotlib Scipy 2015 Instructor: Benjamin Roo...
    flyingsoul閱讀 291評論 0 0
  • 活在塵世噪音里 2017.01.27除夕 堵在十字路口竟不知該怎樣挪步,恨不得變成悟空騰云駕霧而過。 新年之際,街...
    小杜之母閱讀 458評論 2 3

友情鏈接更多精彩內(nèi)容