JS--理解call、apply和bind
call、apply和bind
call,apply是Function原型中的方法,它們的作用一樣,區別在於傳入引數的方式不同。
call(thisArg, arg1, arg2...)
傳入的引數不固定,第一個引數用來指定函式內部this的指向,從第二個引數往後的所有元素引數依次傳入被呼叫的函式
apply(thisArg, argArray)
可以傳入兩個引數,第一個引數用來指定函式內部this的指向,第二個引數是一個帶有下標的集合(Array物件or類陣列arguments),
apply把這個集合中的元素依次傳遞給被呼叫的函式
bind(thisArg, arg1, arg2...)
傳入的引數不固定,第一個引數用來指定函式內部this的指向,從第二個引數往後的所有引數依次傳入被呼叫的函式
建立一個函式例項,this會被繫結到傳給bind函式的第一個引數上
call、apply在實際開發中的應用
改變被呼叫函式內部的this指向
實現Function.prototype.bind函式
借用其他物件的方法
相關推薦
JS--理解call、apply和bind
call、apply和bind call,apply是Function原型中的方法,它們的作用一樣,區別在於傳入引數的方式不同。 call(thisArg, arg1, arg2...) 傳入的引數不固定,第一個引數用來指定函式內部this的指向,從第二個引數往後的所有元素引數依
js中call、apply和bind
call和apply obj.call(thisObj, arg1, arg2, ...); obj.apply(thisObj, [arg1, arg2, ...]); 兩者作用一致,都是把obj(即this)繫結到thisObj,這時候thisObj具備了obj的屬
this(他喵的)到底是什麼 — 理解 JavaScript 中的 this、call、apply 和 bind
javaScript 中最容易被誤解的一點就是 this 關鍵字。在這篇文章中,你將會了解四種規則,弄清楚 this 關鍵字指的是什麼。隱式繫結、顯式繫結、new 繫結和 window 繫結。在介紹這些技術時,你還將學習一些 JavaScript 其他令人困惑
js深入之call、apply和bind模擬實現
call和apply 作用:呼叫一個物件的一個方法,以另一個物件替換當前物件。 區別:呼叫引數形式不同。(call引數依次給出,apply通過Array物件傳入) this:誰呼叫我,我就指向誰
js深入之實現call、apply和bind
一. call和apply 1. 程式碼完整實現 Function.prototype.mycall = function (context, ...argus) { if (typeof this !== 'function') { throw new TypeError
call、apply和bind方法的用法以及區別
方法呼叫模式: 當一個函式被儲存為物件的一個方法時,如果呼叫表示式包含一個提取屬性的動作,那麼它就是被當做一個方法來呼叫,此時的this被繫結到這個物件。 var a = 1 var obj1 = { a:2, fn:function(){
【譯】Javascript: call()、apply() 和 bind()
原文地址:Javascript: call(), apply() and bind() 原文作者:Omer Goldberg 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m… 譯者:YueYong 校對者:Guangping, s
call、apply、bind的區別,模擬call、apply和bind的實現
bind:bind繫結完this的指向後會返回一個新的函式體,不會被立即呼叫 call&apply:繫結完this的指向後會立即呼叫 call與apply的區別: call:第一個引數是this的指向,
深入理解 call,apply 和 bind
在JavaScript 中,call、apply 和 bind 是 Function 物件自帶的三個方法,這三個方法的主要作用是改變函式中的 this 指向,從而可以達到`接花移木`的效果。本文將對這三個方法進行詳細的講解,並列出幾個經典應用場景。 1、call(thi
Javascript中call、apply和bind的區別以及原始碼解析
我們知道在javascript中call和apply以及bind都可以改變this指向,那麼它們是怎麼實現的呢?彼此之間有什麼區別呢?首先我們先來分別解析一下它們: (一)call 首先我們先來看一下如何使用call: var valu
js中的call()方法、apply()和bind()方法的區別以及使用場景
在js中,所有的函式再被呼叫的時候都會預設傳入兩個引數,一個是this,還有一個是arguments。在預設情況下this都是指當前的呼叫函式的物件。但是有時候我們需要改變this的指向,也就是說使函式可以被其他物件來呼叫,那麼我們應該怎樣做呢?這時候我們就可以使用call,apply和bi
程式碼-JS之call、apply、bind函式
//這三個函式都可以改變函式內部this的指向 //函式.call(希望this指向的物件,引數1, 引數2…); 呼叫之後,會直接執行函式 //函式.apply(希望this指向的物件,[引數1, 引數2…]); 呼叫之後,會直接執行函式 //函式.bind(希望this
JS中call、apply、bind大概區別
為什麼需要這些?主要是因為this,來看看this乾的好事。 box.onclick = function(){ function fn(){ alert(this); } fn(); }; 我們原本以為這裡面的this指向的是box,然
js中call、apply、bind的用法及區別
call、apply和bind:三者作用一致(都是改變函式的this指向),只是使用的方法不同而已。apply 、 call 、bind 三者都是用來改變函式的this物件的指向的;apply 、 call 、bind 三者第一個引數都是this要指向的物件,也就是想指定的上
js中call、apply、bind的用法
今天看部落格時,看到了這樣的一段js程式碼: var bind = Function.prototype.call.bind(Function.prototype.bind); 我想突然看到這樣的一段程式碼,即使js能力再強的人,可能也需要花點時間去理解。像我這樣的
js 模擬call、apply、bind實現
cal urn 需要 turn del typeof class 實現 function 1、模擬call實現 Function.prototype.myCall = function (context) { var context = context || w
js中call, apply, bind的自我心得
apply 和 call 的區別 apply和call: apply和call作用相同,只是在傳參上面有點小差別,兩個方法一個是將呼叫函式中的引數放在一個數組中傳過去,一個是一個一個傳過去。 這裡用apply方法做講解,apply方法傳入兩個引數:一個是作為函式上下文的物件
call、apply與bind的異同
相同點: 1、這三個方法都是用來改變函式內this的指向。 2、都可以接收引數。 3、第一引數都是this要指向的物件。 不同點: function Parent(name, arr){ this.name = name;
call,apply和bind詳解
本來這些內容是寫在this指向那篇部落格中的,但發現面試筆試中這個知識點出現的機率很高,所單獨拿出來講解一下。 一.call和apply call和apply其實是同一個東西,區別只有引數不同,call是apply的語法糖,所以就放在一起說了,這兩個方法都是定義在函式物件
詳解call(),apply()和bind()
之前看了點es6的箭頭函式,為了搞懂箭頭函式的this,看了很多文章,也順便看了幾個繫結函式,發現很多以前沒注意的問題,收穫不少。 之前就在網上的筆試題中看過用js實現bind()函式,沒怎麼在意,以為既然都是用來進行上下文繫結的,用call或者apply應該就能實