日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

javascript - 關于apply()與call()的問題

瀏覽:188日期:2023-02-23 11:40:34

問題描述

function sum(num1,num2) { return num1 + num2;}function callSum1(num1,num2) { return sum.apply(this,arguments);}function callSum2(num1,num2) { return sum.apply(this,[num1,num2]);}alert(callSum1(10,10));alert(callSum2(10,10));//call()例子就省略了

問:1.sum.apply(this,arguments)說的是對象sum調用apply方法,this指的是callSum()與sum()都是同一個作用域運行,arguments指的就是”sum1,sum2”?2.apply()與call()的在項目中應用價值是什么呢?

問題解答

回答1:

樓上寫的真復雜:)

聽我講講,題主疑惑的地方1:

function callSum1(num1,num2) { return sum.apply(this,arguments); // 這里的arguments和下面的[num1,num2]是同一個意思}function callSum2(num1,num2) { return sum.apply(this,[num1,num2]);}

arguments 是一個類似數組的對象, 對應于傳遞給函數的參數。arguments對象是所有函數中可用的局部變量。你可以使用arguments對象在函數中引用函數的參數。

PS:this的指向在函數定義的時候是確定不了的,只有函數執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個調用它的對象

2、call和apply應用價值(存在的意義):

作用都是為了改變函數運行時上下文而存在的。 即改變函數體內部this的指向'說白點,a有xx方法,b沒有。b可以問a借!'(這tm不就是繼承嘛~)

call和apply不同點:

接受參數方式不一樣。

如下:call接受的是連續參數,apply接受的是數組參數。A.call(this, a,b,c,d)A.apply(this, [a,b,c,d])

一個傳送門:http://www.jianshu.com/p/a7b1...

回答2:

arguments是function內置屬性之一,表示函數數組對象,即 callSum1里的arguments 指代 num1和num2https://developer.mozilla.org...

apply 跟 call的價值在于,能夠使得指定函數里面的this指向特定的對象上,舉個例子,我們用document.querySelectorAll()獲取的dom其實是一個類數組對象,非數組,如果想要用數組的方法時,可以是這樣

var doms = document.querySelectorAll(’p’);[].forEach.call(doms, function(e){ //遍歷元素});

而apply 跟call主要區別在于參數格式,這個建議題主翻翻MDN。

回答3:

1.sum.apply(this,arguments)說的是對象sum調用apply方法,this指的是callSum()與sum()都是同一個作用域運行,arguments指的就是”sum1,sum2”?

2.apply()與call()的在項目中應用價值是什么呢?

針對 1 執行結果兩個都返回 20 20

sum.apply(this,arguments) 指的是用apply來調用sum 指定sum執行的時候的this為現在的這個this 后面的arguments是參數列表 是一個類數組對象,你可以簡單地當成數組對待。

sum.apply(this,[num1, num2]) 與上面類似。

關于arguments,發一張截圖你可能就會有感性的認識了

javascript - 關于apply()與call()的問題

以下是針對第二點的回答

欽點this

比較好理解 就是改變 this 指向 比如在 ajax 請求的 success 回調的時候

比如在vue開發的時候 如果沒有箭頭函數 得要用 var that = this 這樣暫存 this。 如果可以欽點this就沒這些問題

舉個栗子

function sayName(){ console.log(this.name); }var xiao_ming = { name: ’小明妹妹’}// 欽點 this sayName.call(xiao_ming);

javascript - 關于apply()與call()的問題

把類數組對象轉化成真丶數組

arguments 通過類數組對象的形式 保存著函數的參數列表 。

function sumAll(){ var argu = Array.prototype.slice.call(arguments); // 從 0 開始積、每次 sum + cur 作為下次的 sum return argu.reduce((sum, cur) => sum + cur, 0); }

javascript - 關于apply()與call()的問題

其實從這里可以窺見:執行 slice 只需要對象具備 length 正確的下標 就可以正常執行 并返回結果。

因為數組的很多方法都可以用在類數組對象上,因此類數組對象很多時候確實可以被認為就是數組。

// 聲明一個類數組對象 var a = { 0: ’hello’, 1: ’seg’, 2: ’ment’, 3: ’fault’, length: 4}// forEach Array.prototype.forEach.call(a, elem => console.log(elem)); // => 遍歷打印// reduce var helloSF = Array.prototype.reduce.call(a, (acc, cur) => acc + cur + ’ ’, ’’); console.log(helloSF); // => // 'hello seg ment fault '

javascript - 關于apply()與call()的問題

還可以做的更像數組

var a = { 0: ’hello’, 1: ’seg’, 2: ’ment’, 3: ’fault’, length: 4}a.__proto__ = Array.prototype; a.forEach(e => console.log(e)); Array.prototype.reduce.call(a, (acc, cur) => acc + cur + ’ ’, ’’);

javascript - 關于apply()與call()的問題

Object Really Like Array

實現偏函數 Partial Function

跟數學上的偏函數類似,比如:

函數 f(x, y) = x + y如果令 y = k 那么可以得到偏函數 f(x, k) = x + k ( 或者這樣可能更好理解: f(x, 4) = x + 4 )

一般都是用 bind 來實現偏函數的。 不過 apply 和 call 和 bind 應該集中的講講。

function logger(type){ return console.log.bind(console, type); }

javascript - 關于apply()與call()的問題

用 apply 實現上述 logger 就是:

function logger2(type){ return function(){var argu = Array.prototype.slice.call(arguments); argu.unshift(type); console.log.apply(console, argu); }}

javascript - 關于apply()與call()的問題

高階函數和柯里化

高階函數一般指的是返回值是函數或者其參數是函數的函數。

setTimeout 是個很好的例子 它接受一個參數(一般是函數) 然后在一定時延后執行它。 不過傳進去之后一般 this 就指向了 全局對象 window 如果想要欽點 this 就得用 call apply 和 bind

上面的 logger2 就做到了這點 返回了一個函數出去

關于柯里化 先看函數 add

function add(x, y){ return a + b; }add(1, 2); // => // 3

如果參數能一個一個的傳 傳到第二個的時候就得出結果:

var add1 = add(1); add1(2); // => 3 add(3)(4); // => 7

第一次執行返回了一個函數,如果把 add 看成是數學意義上的函數 那就是 f(x, y) = x + y 我們執行了一次 add(1) 得到 add1 其實就是令 x = 1 了,于是得到偏函數

f(1, y) = 1 + y

第二次再執行 y 會得到實際值 算式就可以算出結果出來。

這其實是一步步消元的過程。

有什么用的?

我在函數式編程方面也才初學,還沒領會到精髓,唯一對柯里化體會的用處是 惰性求值 剛剛的運算在參數給齊之前不會運行 等到參數夠了就會算出結果。

大半夜不睡覺刷sf 只能想到這些了。。。。

回答4:

手動設置this作用域。

回答5:

百度一下你就知道。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产欧| 欧美1区二区| 日本欧美一区二区在线观看| 美女精品在线| 亚洲毛片一区| 日本久久二区| 国产欧美日韩一区二区三区四区| 国产欧美一级| 久久精品国产99国产| 国产精选在线| 亚洲午夜精品久久久久久app| 久久精选视频| 亚洲一区二区毛片| 亚洲视频二区| 国产激情精品一区二区三区| 超碰成人av| 国产一区导航| 免费人成黄页网站在线一区二区| 亚洲免费毛片| 久久久久黄色| 欧美sm一区| 亚洲一区网站| 国产精品久久久久av蜜臀 | 精品欧美视频| 一区二区三区四区在线看| 欧美综合国产| 久久国产免费看| 中文字幕一区久| 蜜臀国产一区二区三区在线播放| 国产日韩欧美一区二区三区在线观看 | 日本久久精品| 91精品高清| 国产欧美一区二区精品久久久 | 成人精品中文字幕| 香蕉精品视频在线观看| 日韩精品亚洲专区| 夜鲁夜鲁夜鲁视频在线播放| 亚洲欧美网站| 久久精品一区二区三区中文字幕| 国产一区欧美| 欧美aⅴ一区二区三区视频| 香蕉久久99| 国产美女久久| 国产专区一区| 国产免费播放一区二区| 日韩精品麻豆| 国产欧美日韩免费观看| 国产韩日影视精品| 麻豆传媒一区二区三区| 久久青草久久| 国产午夜久久av| 国产精品97| 狂野欧美性猛交xxxx| 国产精品人人爽人人做我的可爱| 国产欧美88| 中文欧美日韩| 日韩一区欧美| 欧美亚洲三区| 国产精品毛片在线看| 成人午夜毛片| 日韩av字幕| 亚洲女同一区| 91亚洲国产| 国产欧美激情| 久久成人精品| 日韩免费一区| 麻豆精品在线观看| 亚洲三级视频| 亚洲韩日在线| 国内精品麻豆美女在线播放视频| 蜜桃传媒麻豆第一区在线观看| 久久三级福利| 国产精品久久观看| 国产日韩高清一区二区三区在线| 国产视频欧美| 色婷婷久久久| 精品伊人久久久| 日韩欧美2区| 一区在线免费观看| 福利一区在线| 国产精品成人国产| 日韩国产在线观看一区| 男人操女人的视频在线观看欧美| 久久精品在线| 日本蜜桃在线观看视频| 久久精品国产久精国产爱| 欧美亚洲一区二区三区| 亚洲精品伊人| 亚洲91在线| 四虎在线精品| 亚洲精品极品| 日韩毛片一区| 日韩高清电影免费| 亚洲欧美在线综合| 综合一区av| 99国产精品久久久久久久| 久久五月天小说| 激情综合网址| 欧美日韩国产高清| 亚洲综合不卡| 男女男精品网站| 蜜桃久久av| 亚洲在线观看| 日韩精品一级中文字幕精品视频免费观看| 亚洲成人精选| 一本一本久久| 亚洲一区二区免费在线观看| 中文字幕中文字幕精品| 最新亚洲国产| 国产人成精品一区二区三| 亚洲欧洲国产精品一区| 在线国产日韩| 日本精品另类| 麻豆久久久久久| 日韩电影在线视频| 欧美日韩水蜜桃| 99日韩精品| 日本一区二区三区中文字幕| 97成人超碰| 高清在线一区| 亚洲电影在线一区二区三区| 亚洲一区二区三区中文字幕在线观看| 91综合久久爱com| 欧美好骚综合网| 亚洲一区亚洲| 日韩精品午夜视频| 国产一区二区三区91| 五月天久久网站| 青青草伊人久久| 水蜜桃精品av一区二区| 91成人超碰| 国产精品视频首页| 麻豆精品蜜桃| 日韩精品视频网| 久久在线91| 成人久久一区| 美国三级日本三级久久99| 日韩午夜在线| 日韩和欧美一区二区三区| 国产欧美一区二区三区精品观看| 精品视频一区二区三区四区五区| 风间由美中文字幕在线看视频国产欧美| 水蜜桃久久夜色精品一区| 久久久9色精品国产一区二区三区| 日韩精品一区二区三区免费观影 | 91视频久久| 蜜桃tv一区二区三区| 99国产精品自拍| 日本在线视频一区二区| 日韩欧美在线精品| 日韩a一区二区| 国产精品三上| 久久精品999| 黑森林国产精品av| 欧美日韩国产在线一区| 欧美日韩一二三四| 亚洲精品第一| 91伊人久久| 国产精品97| 欧美日韩一区二区三区不卡视频| 成人台湾亚洲精品一区二区| 不卡视频在线| 成人国产精品一区二区网站| 99久久久久国产精品| 红桃视频国产一区| 久久国产欧美日韩精品| 久久国产亚洲| 爽好久久久欧美精品| 欧美日韩一视频区二区| 91成人精品视频| 国产精品2023| 日韩视频中文| 精品亚洲a∨| 日韩精品三级| 性欧美xxxx免费岛国不卡电影| 亚洲精选久久| 天堂av在线| 亚洲精品精选| 日韩另类视频| 亚洲精品亚洲人成在线观看| 四虎8848精品成人免费网站| 免费看欧美美女黄的网站| 日韩欧美一区二区三区免费看| 亚洲精品三级| 激情婷婷欧美| 国产91欧美| 最新国产精品视频| 怡红院精品视频在线观看极品| 国产精品成人3p一区二区三区| 亚洲欧美日本日韩| 日韩三区在线| 精品久久在线| 日韩精品1区2区3区| 一区二区自拍| 丁香婷婷久久| 91成人在线精品视频| 最新日韩av| 久久久久99| 久久婷婷国产| 久久中文字幕二区|