js中 call,apply,bind方法區別

2021-10-05 13:05:44 字數 708 閱讀 6264

區別:

bind改變完this指向不會呼叫函式,要用新的方法來接收,通過呼叫新的方法來執行改造後的函式(最常用)

相同點:都可以改變this指向

下面用實列說明

用call方法時 fn1函式指向為obj物件,且會自動執行改造後的函式 列印出結果為3

var obj =  ;  

function fn1(a, b)

fn1.call(obj, 1, 2);

var obj = 

function fn(arr, arr1, arr2)

用bind()方法時,函式改造完後不會自動去呼叫,可以用乙個函式來接收bind改造完產生的新函式來呼叫他

var obj = 

function fn1(a, b)

var f = fn1.bind(obj, 1, 2);

f();

所以call與bind方法區別就乙個自動去呼叫函式,乙個不會所以如果明白立即函式的就明白了 下面倆種寫法時等價的

fn1.bind(obj, 1, 2)();

fn1.call(obj, 1, 2) //倆種寫法等效

This學習實現call apply bind

不說太多,直入主題 由淺入比淺深一點 function test str let obj 才疏學淺,歡迎補充與建議 實現步驟 只在函式上實現該功能 確定所傳物件有效 將當前函式this繫結到該物件上 執行該物件繫結的此函式 function.prototype.mycall function con...

如何模擬實現乙個call apply bind函式

call模擬實現 首先我們實現繫結this功能。比如我們有乙個foo函式 function getname 還有乙個wechat物件 const wechat 我們希望實現 getname.call wechat fedaily以wechat和getname這個為例,這裡的this即getname,...

js之旅(七)js中this

本文講述js中this的指向 介紹es5和es6中this的不同 在js es5中,使用的是function函式,誰在呼叫function,this就指向誰,有以下幾個特點 1.1 this最終指向的是呼叫它的物件 這個特點的就是es5中this的指向,其它特點都是對它的補充,如下示例 functi...