成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺談 apply 和 call

arashicage / 2982人閱讀

摘要:要想記得牢,首先要記住它存在的目的。或可以看出和是為了動(dòng)態(tài)改變而出現(xiàn)的,如果一個(gè)沒(méi)有某個(gè)方法,而別的有,那么就用得上和了。那和有什么區(qū)別呢請(qǐng)看下邊這個(gè)例子很容易就可以看出和的區(qū)別就是傳參數(shù)的方式不同。

要想記得牢,首先要記住它存在的目的。
在javascript OPP中,我們經(jīng)常這樣定義:

function person(){}
person.prototype = {
    name: "jack",
    say: function(){
        console.log("my name is" + this.name)
    }
}
var goodPerson = new person()
goodPerson.say() // 打印 my name is jack

現(xiàn)在有一個(gè)對(duì)象dog = {name:"wangwang"},這條狗也想會(huì)說(shuō)話(擁有say方法),那么我們可以這樣goodPerson.say.call(dog) 這樣dog就可以說(shuō)話了。

var dog = {
    name:"wangwang"
}
goodPerson.say.apply(dog) // my name is wangwang
或
goodPerson.say.call(dog) // my name is wangwang

可以看出call和apply是為了動(dòng)態(tài)改變this而出現(xiàn)的,如果一個(gè)object沒(méi)有某個(gè)方法,而別的object有,那么就用得上call和apply了。
那call 和 apply有什么區(qū)別呢?
請(qǐng)看下邊這個(gè)例子:

function add (a = 1, b = 1) {
    return a + b
}
function sub (a = 1, b = 1) {
    return a - b
}
add() // 2
sub() // 0
add.call(sub, 2, 2) // 4
add.apply(sub,[2,2]) // 4
sub.call(add, 3, 2) // 1
sub.apply(add, [3, 2]) // 1

so,很容易就可以看出call和apply的區(qū)別就是傳參數(shù)的方式不同。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93071.html

相關(guān)文章

  • 淺談call()、apply()、bind()方法

    摘要:函數(shù)調(diào)用方法一般我們是這樣調(diào)用函數(shù)的和現(xiàn)在我們說(shuō)一說(shuō)方法和方法。他們都是調(diào)用一個(gè)對(duì)象的方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。例如方法在上面的例子中,,意思就是用來(lái)替換。和方法比較類似,其作用都是改變上下文的。 call(), apply(), bind() 函數(shù)調(diào)用方法 一般我們是這樣調(diào)用函數(shù)的: function add(x){ console.log(x) } add(2)//2...

    zhangrxiang 評(píng)論0 收藏0
  • 淺談javascript里面的this、call、apply、bind

    摘要:如果該參數(shù)的值為或,則表示不需要傳入任何參數(shù),從開(kāi)始可以使用類數(shù)組對(duì)象。當(dāng)使用操作符調(diào)用綁定函數(shù)時(shí),該參數(shù)無(wú)效。當(dāng)綁定函數(shù)被調(diào)用時(shí),這些參數(shù)將置于實(shí)參之前傳遞給被綁定的方法。 在了解call,apply之前需要先了解下javascrit中this指向 this的指向在ES5里面,this永遠(yuǎn)指向最后調(diào)用它的那個(gè)對(duì)象舉個(gè)栗子: var name = outerName; function...

    Lemon_95 評(píng)論0 收藏0
  • 淺談-this

    摘要:回調(diào)函數(shù)中調(diào)用在回調(diào)函數(shù)中一般有兩種情況回調(diào)函數(shù)為匿名函數(shù)時(shí),回調(diào)函數(shù)的會(huì)指向,需要對(duì)回調(diào)函數(shù)?;卣{(diào)函數(shù)為箭頭函數(shù)時(shí),回調(diào)函數(shù)的會(huì)指向他的直接上層。 淺談-this this簡(jiǎn)單而又神秘,使用場(chǎng)景多變而又復(fù)雜,這造就了它成為了初級(jí)javascript開(kāi)發(fā)人員不愿接觸的東西,高級(jí)javascript都想探究的東西。文本亦是對(duì)this的致敬。 this是什么? this是當(dāng)前執(zhí)行環(huán)境...

    archieyang 評(píng)論0 收藏0
  • 淺談細(xì)說(shuō) JS 函數(shù)(call,apply,重載)

    摘要:什么是函數(shù)引用的原話函數(shù)是一組可以隨時(shí)隨地運(yùn)行的語(yǔ)句。函數(shù)是由這樣的方式進(jìn)行聲明的關(guān)鍵字函數(shù)名一組參數(shù),以及置于括號(hào)中的待執(zhí)行代碼。 什么是函數(shù)? 引用 W3School 的原話: 函數(shù)是一組可以隨時(shí)隨地運(yùn)行的語(yǔ)句。 函數(shù)是 ECMAScript 的核心。 函數(shù)是由這樣的方式進(jìn)行聲明的:關(guān)鍵字 function、函數(shù)名、一組參數(shù),以及置于括號(hào)中的待執(zhí)行代碼。 函數(shù)的基本語(yǔ)法是這樣的:...

    U2FsdGVkX1x 評(píng)論0 收藏0
  • 淺談原型式繼承、借助構(gòu)造函數(shù)、組合方式繼承

    摘要:想要解決這樣的問(wèn)題的話,可以借助構(gòu)造函數(shù)也可以叫做偽造對(duì)象或經(jīng)典繼承。這種方式實(shí)現(xiàn)非常簡(jiǎn)單,就是在子對(duì)象的構(gòu)造函數(shù)中調(diào)用父對(duì)象的構(gòu)造函數(shù)。 原型式繼承 原型式繼承,就是一定一個(gè)函數(shù),該函數(shù)中創(chuàng)建一個(gè)臨時(shí)性的構(gòu)造函數(shù),將作為參數(shù),傳入的對(duì)象作為這個(gè)構(gòu)造函數(shù)的原型,最后返回這個(gè)構(gòu)造函數(shù)的實(shí)例對(duì)象 /*定義函數(shù):用于實(shí)現(xiàn)對(duì)象之間的繼承 參數(shù): obj:表示繼承關(guān)系中的父級(jí)對(duì)象...

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

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

0條評(píng)論

閱讀需要支付1元查看
<