亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js中call,apply和bind方法的區別和使用場景?

js中call,apply和bind方法的區別和使用場景?

喵喵時光機 2019-02-05 10:06:43
js中call,apply和bind方法的區別和使用場景
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

在js中,所有的函數再被調用的時候都會默認傳入兩個參數,一個是this,還有一個是arguments。在默認情況下this都是指當前的調用函數的對象。但是有時候我們需要改變this的指向,也就是說使函數可以被其他對象來調用,那么我們應該怎樣做呢?這時候我們就可以使用call,apply和bind方法了。
1.首先搞清楚call,apply和bind方法的來歷
在js中所有的函數都是Function的實例,而且對于Function來說,它的原型即Function.prototype中含有很多東西,其中call,apply和bind方法就是Function原型中的方法,所以根據原型的規則,所有的函數都可以使用原型中屬性和方法,所以來說,對于所有的函數都可以使用call,apply和bind方法。
簡單一句話:call,apply和bind都是Function原型中的方法,而所有的函數都是Function的實例。

查看完整回答
反對 回復 2019-03-15
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

1、call,apply和bind的區別
它們在功能上是沒有區別的,都是改變this的指向,它們的區別主要是在于方法的實現形式和參數傳遞上的不同。call和apply方法都是在調用之后立即執行的。而bind調用之后是返回原函數,需要再調用一次才行,
2、①:函數.call(對象,arg1,arg2....)
②:函數.apply(對象,[arg1,arg2,...])
③:var ss=函數.bind(對象,arg1,arg2,....)
3、總結一下call,apply,bind方法:
a:第一個參數都是指定函數內部中this的指向(函數執行時所在的作用域),然后根據指定的作用域,調用該函數。
b:都可以在函數調用時傳遞參數。call,bind方法需要直接傳入,而apply方法需要以數組的形式傳入。
c:call,apply方法是在調用之后立即執行函數,而bind方法沒有立即執行,需要將函數再執行一遍。有點閉包的味道。
d:改變this對象的指向問題不僅有call,apply,bind方法,也可以使用that變量來固定this的指向。



查看完整回答
反對 回復 2019-03-15
  • 2 回答
  • 0 關注
  • 800 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號