Javascript中call和apply的區別與詳解
在js中call和apply它們的作用都是將函式繫結到另外一個物件上去執行,兩者僅在定義引數方式有所區別,下面我來給大家介紹一下call和apply用法。
在web前端開發過程中,我們經常需要改變this指向,通常我們想到的就是用call方法,但是對於call的理解很多人不是很清晰,那麼下面小編就給大家詳細說一說call和apply的詳細知識
一、call方法的定義
大家在百度裡面可以搜尋call,關於call的定義都很拗口。在我的理解,a.call(b,arg1,arg2..)就是a物件的方法應用到b物件上。例如如下例子:
程式碼如下 | 複製程式碼 |
function add(a,b) |
二、call可以改變this指向
如下例:
程式碼如下 | 複製程式碼 |
function b() |
再看一個複雜的例子:
程式碼如下 | 複製程式碼 |
function Animal() |
三、實現繼承
如下例子:
程式碼如下 | 複製程式碼 |
function Animal(name) |
四、apply用法
apply和call的用法只有一個地方不一樣,除此之外,其他地方基本一模一樣
a.call(b,arg1,arg2…)
apply(b,[arg1,arg2]) //apply只有2個引數,它將call的引數(arg1,arg2…)放在一個數組中作為apply的第二引數
相關推薦
javascript中call、apply、bind詳解
組裝 div 分析 rgs 特性 類型 bind詳解 中修改 不支持 1.apply和call的區別在哪裏 2.什麽情況下用apply,什麽情況下用call 3.apply的其他巧妙用法(一般在什麽情況下可以使用apply) 我首先從網上查到關於apply和
Javascript中call和apply的區別與詳解
轉自:http://www.7old.com/jiaocheng/show-1412.html在js中call和apply它們的作用都是將函式繫結到另外一個物件上去執行,兩者僅在定義引數方式有所區別,下面我來給大家介紹一下call和apply用法。 在web前端開發過程中
javascript中call()和apply()方法的區別
首先需要知道 call 和 apply 都是js 物件 prototype的方法 在使用的時候主要區別: var foo() = function(){ ....//程式碼段 } // foo.
JavaScript中call和apply方法的使用
acvaScript中的call()方法和apply()方法,在某些時候這兩個方法還確實是十分重要的。1. 每個函式都包含兩個非繼承而來的方法:call()方法和apply()方法。2. 相同點:這兩個方法的作用是一樣的。都是在特定的作用域中呼叫函式,等於設定函式體內this物件的值,以擴充函式賴以執行的作用
javascript中call和apply的模擬實現
call() call() 方法呼叫一個函式, 其具有一個指定的this值和分別地提供的引數(引數的列表)。 語法:fun.call(thisArg, arg1, arg2, ...) 例
整理JavaScript的Call和Apply區別
function classA() { this.name='bluedestiny'; this.show = function () { // alert(this.name); } } function classB(
JavaScript中 call和apply
nbsp clas div 其余 color 接收 style pre ava call()方法和apply()方法的作用相同,他們的區別在於接收參數的方式不同。 對於call(),第一個參數是this值沒有變化,變化的是其余參數都直接傳遞給函數。(在使用call()方法時
Javascript中call、apply和bind的區別以及原始碼解析
我們知道在javascript中call和apply以及bind都可以改變this指向,那麼它們是怎麼實現的呢?彼此之間有什麼區別呢?首先我們先來分別解析一下它們: (一)call 首先我們先來看一下如何使用call: var valu
【轉】詳解 JavaScript的 call() 和 apply()
定義 ECMAScript規範為所有函式都包含兩個方法(這兩個方法非繼承而來), call 和 apply 。這兩個函式都是在特定的作用域中呼叫函式,能改變函式的作用域,實際上是改變函式體內 this 的值 。 call 和 app
JavaScript中bind、call、apply函式用法詳解
在給我們專案組的其他程式介紹 js 的時候,我準備了很多的內容,但看起來效果不大,果然光講還是不行的,必須動手。前幾天有人問我關於程式碼裡 call() 函式的用法,我讓他去看書,這裡推薦用js 寫伺服器的程式猿看《javascript程式設計精粹》 這本書,crockfo
js的面試筆試--javascript中call()、apply()、bind()方法的區別
在JavaScript 中,this的指向是動態變化的,很可能在寫程式的過程中,無意中破壞掉this的指向,所以我們需要一種可以把this的含義固定的技術,於是就有了call,apply 和bind這三個方法,來改變函式體內部 this 的指向,因為函式存在「定義時上下文」和
js中call()和apply()的區別
JS中每個函式都包含兩個非繼承而來的方法:apply()和call()。這兩個方法都用於在特定的作用域中呼叫函式,即將一個函式繫結到另一個函式中,比如有兩個函式A和B,要在B函式中呼叫A函式,就需要用到這兩個方法,說白了就是設定函式體內this物件的值。 call
JavaScript中Null和undefind區別
cdc 如何 undefine 只有一個 som pre cnblogs 定義 報錯 公眾號原文 Javascript有5種基本類型:Boolean,Number,Null,Undefined,String;和一種復雜類型:Object(對象); undef
javascript中call()、apply()、bind()的用法
javascript中call()、apply()、bind()的用法 其實是一個很簡單的東西,認真看十分鐘就從一臉懵B 到完全 理解! 先看明白下面: 例1 obj.objAge; //17 obj.myFun() //小張年齡undefined 例2 show
javascript中call()、apply()、bind()的用法理解
一、bind的用法 第一個:obj.showInfo('arg','arg_18');中傳的2個引數通過showInfo方法改變的是obj下中的name和age 第二個:obj.showInfo.bind(this)('bind','bind_18');中bind要傳的name和age是通過一個一個傳
javascript中call()、apply()、bind()的用法終於理解
其實是一個很簡單的東西,認真看十分鐘就從一臉懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; // 17 obj.myFun() // 小張年齡 undefined 例 2 shows() // 盲僧 比較一下這兩者 this
裝箱和拆箱的區別與詳解
深入剖析Java中的裝箱和拆箱 自動裝箱和拆箱問題是Java中一個老生常談的問題了,今天我們就來一些看一下裝箱和拆箱中的若干問題。本文先講述裝箱和拆箱最基本的東西,再來看一下面試筆試中經常遇到的與裝箱、拆箱相關的問題。 以下是本文的目錄大綱:
js中 call bind apply區別
call、apply、bind都是js中改變this的指向,但是使用起來不太一樣。 call(this,agrument1,agrument2) apply(this,[agrument1,agrum
JavaScript 中call()、 apply()、 bind()改變this指向理解
最近開發的過程中遇到了this指向問題,首先想到的是call()、apply()、bind()三個方法,有些時候這三個方法確實是十分重要,現在我們就把他們的使用方法及異同點講解一下。 1、每個函式都包含三個非繼承而來的方法,call()方法、apply()方法和bind()方法 &nbs
js數組中foEach和map的用法詳解 jq中的$.each和$.map
cnblogs arr 對象 cal for index source asc 原生js 數組中foEach和map的用法詳解 相同點: 1.都是循環遍歷數組(僅僅是數組)中的每一項。 2.forEach() 和 map() 裏面每一次執行匿名函數都支持3個參數:數組中的