最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

這2個(gè)函數(shù)主要為了解決什么問題?

這2個(gè)函數(shù)主要為了解決什么問題?

慕標(biāo)琳琳 2023-05-02 14:10:36
在一些jQuery插件中經(jīng)常看到類似 callback.call(xxx,xxx) 雖然看到書上有介紹 說call和apply函數(shù)可以改變作用域,但還是無法非常透徹的理解改變作用域主要是為了解決什么問題,有沒有替代方案,或者 這2個(gè)函數(shù)主要為了解決什么問題,應(yīng)用場(chǎng)景,何時(shí)使用最合適,每次讀到這樣的代碼就暈了,一下子從線性閱讀中跳出去了,感覺有點(diǎn)繞
查看完整描述

2 回答

?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

call和apply的作用很簡(jiǎn)單,就是改變上下文,適用場(chǎng)景太多了,雖然有時(shí)候只是為了“美觀”,下面幾個(gè)是我常用的。

1.

Object.prototype.toString.call(Obj)

用來判斷 Obj 的類型

  1. arguments 雖然和Array 很像,但是他沒有Array的push之類的方法,怎么辦?

Array.prototype.push.call(arguments)

3.Javascript 沒有私有方法的概念,想用閉包實(shí)現(xiàn)

(function () {    var Person = function () {        this.doSomeThing = function () {
            _privateFunction.call(this);
        }
    }    var _privateFunction = function () {

    }    window.Person = Person;

}).call(window);

差不多就是這個(gè)意思,callback的時(shí)候,當(dāng)你希望你的callback中的上下文是當(dāng)前上下文的時(shí)候,也可以用call或者apply,有什么好處呢?

這個(gè)時(shí)候你的callback 里面的this 就是指代當(dāng)前上下文。例如一個(gè)類Person,然后他的方法 say 有一個(gè)callback的參數(shù),如果這個(gè)callback是通過普通的括號(hào)來執(zhí)行的話,那在這個(gè)callback里面執(zhí)行person的其它方法還需要用person.other 來實(shí)現(xiàn),但是切換上下文之后,就是this.other搞定~代碼對(duì)比如下:

var Person = function(){

};Person.prototype.say = function(callback){    callback();
};Person.prototype.other = function(){

};var vincent = new Person();

vincent.say(function(){
    vincent.other();
});

用了call的:

var Person = function(){

};Person.prototype.say = function(callback){
    callback.call(this);
};Person.prototype.other = function(){

};var vincent = new Person();

vincent.say(function(){    this.other();
});


查看完整回答
反對(duì) 回復(fù) 2023-05-04
?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

也用來使函數(shù)調(diào)用的多個(gè)參數(shù)變?yōu)閿?shù)組參數(shù),比如求一個(gè)數(shù)組內(nèi)最大數(shù)值。

arr = [3,23,4,88,2.5,1,5,7,89];alert(Math.max.apply(Math,arr));


查看完整回答
反對(duì) 回復(fù) 2023-05-04
  • 2 回答
  • 0 關(guān)注
  • 263 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)