鍍金池/ 問(wèn)答/HTML/ 關(guān)于JS的apply方法

關(guān)于JS的apply方法

用apply方法模擬es6中...展開(kāi)運(yùn)算符,下面例子用來(lái)展開(kāi)數(shù)組參數(shù)
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction.apply(null, args);

這里的apply是什么意思?apply不是動(dòng)態(tài)改變this指向嗎?那這里的運(yùn)用是怎么回事

回答
編輯回答
心悲涼
apply()方法接收兩個(gè)參數(shù):一個(gè)是在其中運(yùn)行函數(shù)的作用域,另一個(gè)是參數(shù)數(shù)組。其中,第二個(gè)參數(shù)可以是 Array 的實(shí)例,也可以是 arguments 對(duì)象。

題主的代碼實(shí)際相當(dāng)于:

myFunction(0,1,2);//如果myFunction里有 this,用null 替代,當(dāng)?shù)谝粋€(gè)參數(shù),傳 null 或 undefined 時(shí),將是 JS 執(zhí)行環(huán)境的全局變量,瀏覽器中是 window,其它環(huán)境(如node)則是 global 。

詳情參考:js apply()、call() 使用參考

2018年6月7日 06:37
編輯回答
半心人

展開(kāi)運(yùn)算符內(nèi)部用的是迭代器,只要部署了迭代器的對(duì)象都能用展開(kāi)運(yùn)算符
第一參數(shù)是null表示調(diào)用函數(shù)時(shí)this指向全局變量,第二個(gè)參數(shù)就是一個(gè)數(shù)組,call的話參數(shù)是散開(kāi)的
apply(null, args)相對(duì)于call(null, ...args)

2018年7月27日 10:10