摘要:老是忘掉這兩個東東的用下,寫下來做個記錄吧。如果第一個參數(shù)為,函數(shù)體內(nèi)的指向宿主對象,在瀏覽器中是。和的用途改變指向上面的例子就是啦模擬
老是忘掉這兩個東東的用下,寫下來做個記錄吧。
他們作用是一模一樣的,只是傳入的參數(shù)不一樣
apply
apply接受兩個參數(shù),第一個制定了函數(shù)體內(nèi)this對象的指向,第二個參數(shù)為一個帶下標的集合(可遍歷對象),apply方法把這個集合中的元素作為參數(shù)傳遞給被調用的函數(shù):
var func = function(a, c, c){ alert([a,b,c]); //[1,2,3] } func.apply(null, [1,2,3]);
call
call傳入的參數(shù)不固定,和apply相同的是,第一個參數(shù)也是代表函數(shù)體內(nèi)的this指向,第二個參數(shù)開始往后,每個參數(shù)被依次傳入函數(shù):
var func = function(a, b, c){ alert([a,b,c]); //[1,2,3] } func.call(null, 1,2,3);
call是aplly的一顆語法糖。如果第一個參數(shù)為null,函數(shù)體內(nèi)的this指向宿主對象,在瀏覽器中是window。
call和apply的用途
1.改變this指向
上面的例子就是啦
2.Function.prototype.bind
模擬Function.prototype.bind
Function.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }; var obj = { name: "cxs" }; var func = function(){ alert(this.name); //cxs }.bind(obj); fun();
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79317.html
摘要:和相同點改變指向可以傳參立即調用區(qū)別接收一個數(shù)組參數(shù),直接接收參數(shù)的性能會比差,因為要對數(shù)組參數(shù)進行判斷和解構模擬實現(xiàn)傳遞的如果是或者,那么就是,否則傳遞進來的就是要指向的從第二個參數(shù)開始就是要調用時用到參數(shù)的第二個參數(shù)為數(shù)組,數(shù)組中的元素 call和apply fn.call(isThis, arg1, arg2, ....) fn.apply(isThis, [arg1, arg2...
摘要:那么,它到底是如何工作的呢讓我們從一種更簡單的實現(xiàn)開始實際上這種實現(xiàn)代碼更短,并且更易讀是函數(shù)原型中的一個函數(shù),它調用函數(shù),使用第一個參數(shù)作為參數(shù),并傳遞剩余參數(shù)作為被調用函數(shù)的參數(shù)。 原文:The Most Clever Line of JavaScript 作者:Seva Zaikov 原文 最近 一個朋友 發(fā)給我一段非常有趣的 JavaScript 代碼,是他在某個 開源庫中...
摘要:綁定函數(shù)被調用時,也接受預設的參數(shù)提供給原函數(shù)。原型鏈官方文檔上有一句話說明綁定過后的函數(shù)被實例化之后,需要繼承原函數(shù)的原型鏈方法,且綁定過程中提供的被忽略繼承原函數(shù)的對象,但是參數(shù)還是會使用。 bind 官方描述 bind() 函數(shù)會創(chuàng)建一個新函數(shù)(稱為綁定函數(shù)),新函數(shù)與被調函數(shù)(綁定函數(shù)的目標函數(shù))具有相同的函數(shù)體(在 ECMAScript 5 規(guī)范中內(nèi)置的call屬性)。當目標...
摘要:深入系列第十篇,通過和的模擬實現(xiàn),帶你揭開和改變的真相一句話介紹方法在使用一個指定的值和若干個指定的參數(shù)值的前提下調用某個函數(shù)或方法。如果有錯誤或者不嚴謹?shù)牡胤剑垊毡亟o予指正,十分感謝。 JavaScript深入系列第十篇,通過call和apply的模擬實現(xiàn),帶你揭開call和apply改變this的真相 call 一句話介紹 call: call() 方法在使用一個指定的 this...
摘要:也就是說當返回的函數(shù)作為構造函數(shù)的時候,時指定的值會失效,但傳入的參數(shù)依然生效。構造函數(shù)效果的優(yōu)化實現(xiàn)但是在這個寫法中,我們直接將,我們直接修改的時候,也會直接修改函數(shù)的。 JavaScript深入系列第十一篇,通過bind函數(shù)的模擬實現(xiàn),帶大家真正了解bind的特性 bind 一句話介紹 bind: bind() 方法會創(chuàng)建一個新函數(shù)。當這個新函數(shù)被調用時,bind() 的第一個參數(shù)...
閱讀 2418·2023-04-26 00:46
閱讀 581·2023-04-25 21:36
閱讀 729·2021-11-24 10:19
閱讀 2266·2021-11-23 09:51
閱讀 1015·2021-10-21 09:39
閱讀 830·2021-09-22 10:02
閱讀 1664·2021-09-03 10:29
閱讀 2677·2019-08-30 15:53