成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

js中的call()、apply()和bind()

flyer_dev / 3361人閱讀

摘要:方法都保存在函數(shù)的名下因此每個(gè)函數(shù)都可以直接調(diào)用。都用于改變函數(shù)的執(zhí)行環(huán)境。和和實(shí)際功能一致。輸出結(jié)果為輸出結(jié)果為在非嚴(yán)格模式下,等價(jià)于和必須把函數(shù)參數(shù)寫全,否則無法正確運(yùn)行。對(duì)的,只是創(chuàng)建一個(gè)函數(shù)實(shí)例,因此一般需要以值的形式傳遞之。

方法call()、apply()、bind()都保存在函數(shù)的prototype名下(因此每個(gè)函數(shù)都可以直接調(diào)用)。都用于改變函數(shù)的執(zhí)行環(huán)境。

call()和apply()

call()和apply()實(shí)際功能一致。
call()和apply()在原函數(shù)擁有參數(shù)的時(shí)候,不能只有一個(gè)參數(shù)了。

function add(num1,num2){
    console.log(num1+num2);
}
function show(num1,num2){
    return add.call(null,num1,2);
}
show(2,3); //輸出結(jié)果為4

function add(num1,num2){
    console.log(num1+num2);
}
function show(num1,num2){
    return add.call(null,num1);
}
show(2,3); //輸出結(jié)果為NAN

在非嚴(yán)格模式下,call(null) 等價(jià)于 call(this) 和 call(undefined)
call()必須把函數(shù)參數(shù)寫全,否則無法正確運(yùn)行。
apply()可以理解為,第二個(gè)參數(shù)如果需要,必須傳入全部參數(shù)組成的一個(gè)數(shù)組,或者arguments。

bind()

call()和apply()是直接調(diào)用,而bind()的作用:創(chuàng)建一個(gè)函數(shù)的實(shí)例,執(zhí)行環(huán)境變?yōu)閎ind的參數(shù)。對(duì)的,只是創(chuàng)建一個(gè)函數(shù)實(shí)例,因此一般需要以值的形式傳遞之。

var cat = {color:"blue"};
window.color = "red";
function showColor(){
    console.log(this.color);
}
showColor.bind(cat);   //沒有任何輸出
showColor.bind(cat)(); //輸出blue
var newShowColor = showColor.bind(cat);
newShowColor();        //輸出blue

bind()可用于setTimeout()、setInterval()或者事件處理(document),被綁定的函數(shù)也會(huì)用掉更多的內(nèi)存。

自定義的bind()
function bind(fn,arg){
    return function(){
        return fn.apply(arg,arguments);
    }
}

這里的arg是執(zhí)行環(huán)境對(duì)象,arguments是fn函數(shù)本身的參數(shù)。
bind(showColor,cat);等價(jià)于showColor.bind(cat);

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/93068.html

相關(guān)文章

  • 理解JavaScript中的call,applybind方法

    摘要:輸出的作用與和一樣,都是可以改變函數(shù)運(yùn)行時(shí)上下文,區(qū)別是和在調(diào)用函數(shù)之后會(huì)立即執(zhí)行,而方法調(diào)用并改變函數(shù)運(yùn)行時(shí)上下文后,返回一個(gè)新的函數(shù),供我們需要時(shí)再調(diào)用。 前言 js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改變函數(shù)運(yùn)行時(shí)上下文,最終的返回值是你調(diào)用的方法的返回值,若該方法沒有返回值,則返回undefined。這幾個(gè)方法...

    chaosx110 評(píng)論0 收藏0
  • jscall、apply、bind那些事

    摘要:應(yīng)用場(chǎng)景求數(shù)組中的最大值和最小值并不是最佳選擇是中的靜態(tài)方法,因此必然是沒有使用上下文的必要的。因此綁定只需要用或者占位就可以了。 前言 面試,幾乎每次都會(huì)問到一個(gè)js中關(guān)于call、apply、bind的問題,比如… 怎么利用call、apply來求一個(gè)數(shù)組中最大或者最小值 如何利用call、apply來做繼承 apply、call、bind的區(qū)別和主要應(yīng)用場(chǎng)景 作用 首先問個(gè)問...

    shiyang6017 評(píng)論0 收藏0
  • JS中的call(),apply()bind()方法

    摘要:奔著一星期徹底弄清楚一個(gè)小知識(shí)點(diǎn)的目的這次的目標(biāo)是方法在實(shí)際項(xiàng)目中經(jīng)常會(huì)用到這三個(gè)函數(shù)只是簡(jiǎn)單的知道都是用來進(jìn)行上下文綁定的這三個(gè)函數(shù)都可以實(shí)現(xiàn)現(xiàn)在看來這三者還是有很大區(qū)別的特別是和其他兩個(gè)的區(qū)別先說和目的是改變函數(shù)的執(zhí)行上下文下面列舉一些 奔著一星期徹底弄清楚一個(gè)javascript小知識(shí)點(diǎn)的目的,這次的目標(biāo)是call apply bind方法 在實(shí)際項(xiàng)目中,經(jīng)常會(huì)用到這三個(gè)函數(shù),只...

    nifhlheimr 評(píng)論0 收藏0
  • JS中的call、apply、bind方法詳解

    摘要:不能應(yīng)用下的等方法。首先我們可以通過給目標(biāo)函數(shù)指定作用域來簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無效的。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...

    zombieda 評(píng)論0 收藏0
  • JS系列之call & apply & bind

    摘要:參考鏈接在中,和是對(duì)象自帶的三個(gè)方法,都是為了改變函數(shù)體內(nèi)部的指向。返回值是函數(shù)方法不會(huì)立即執(zhí)行,而是返回一個(gè)改變了上下文后的函數(shù)。而原函數(shù)中的并沒有被改變,依舊指向全局對(duì)象。原因是,在中,多次是無效的。 參考鏈接:https://juejin.im/post/59bfe8... 在JavaScript中,call、apply和bind是Function對(duì)象自帶的三個(gè)方法,都是為了改變...

    xiaochao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<