鍍金池/ 問答/HTML/ call&apply與bind的區(qū)別?

call&apply與bind的區(qū)別?

既然callapplybind這三個方法都是改變this指向的,那具體區(qū)別在哪呢?

回答
編輯回答
氕氘氚
  1. apply 、 call 、bind 三者都是用來改變函數(shù)的this對象的指向的;
  2. apply 、 call 、bind 三者第一個參數(shù)都是this要指向的對象,也就是想指定的上下文;
  3. apply 、 call 、bind 三者都可以利用后續(xù)參數(shù)傳參;
  4. bind 是返回對應函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。
2018年2月8日 07:12
編輯回答
北城荒
  1. call和apply函數(shù)的用法其實是一樣的,只是傳參的形式不一樣. apply可以傳遞數(shù)組.并且執(zhí)行函數(shù).
  2. bind不會調(diào)用函數(shù),會把函數(shù)返回.
2018年4月22日 21:11
編輯回答
奧特蛋

call bind apply 這三個函數(shù)的第一個參數(shù)都是 this 的指向?qū)ο?,第二個參數(shù)差別就來了:call的參數(shù)是直接放進去的,第二第三第n個參數(shù)全都用逗號分隔,直接放到后面 obj.myFun.call(db,'成都', ... ,'string' );apply的所有參數(shù)都必須放在一個數(shù)組里面?zhèn)鬟M去 obj.myFun.apply(db,['成都', ..., 'string' ]);bind除了返回是函數(shù)以外,它的參數(shù)和call一樣

2017年4月22日 10:55
編輯回答
瞄小懶

call第一個參數(shù)是this,后面的參數(shù)是要傳入函數(shù)的參數(shù),用逗號分隔;
apply第一個參數(shù)是this,后面的傳入一個數(shù)組,數(shù)組里面的數(shù)據(jù)是要傳入函數(shù)的參數(shù),順序跟數(shù)組內(nèi)元素順序一樣;

// window.foo(1, 2, 3);
foo.call(window, 1, 2, 3); 
foo.apply(window,[1, 2, 3]);

bind之后返回一個this固定的函數(shù),不能再改變this。

var f = foo.bind(window);
f.call(document);//f的this還是window
2018年5月13日 13:39
編輯回答
大濕胸

這...,隨便找本 JavaScript 書都能講的清清楚楚的

2018年9月10日 06:31