摘要:,,和都是用來改變函數(shù)執(zhí)行時的上下文也就是說改變的指向問題,是的方法,引入是因為沒有將設(shè)置成行參。一般都是庫里面用不推薦自己使用和。和唯一區(qū)別是參數(shù)不一樣,是的語法糖是返回一個新函數(shù)供以后調(diào)用,相比其他兩個比較常用。而和是立即調(diào)用。
apply(),call(),和bind()都是用來改變函數(shù)執(zhí)行時的上下文也就是說改變this的指向問題,是prototype的方法,引入是因為js沒有將this設(shè)置成行參。一般都是庫里面用不推薦自己使用call和apply。
call()和apply()唯一區(qū)別是參數(shù)不一樣,call()是apply()的語法糖;
bind()是返回一個新函數(shù)供以后調(diào)用,相比其他兩個比較常用。而apply()和call()是立即調(diào)用。
如果不需要關(guān)心具體有多少參數(shù)被傳入函數(shù),選用apply();
如果確定函數(shù)可接收多少個參數(shù),并且想一目了然表達形參和實參的對應(yīng)關(guān)系,用call();
如果我們想要之后再調(diào)用方法,不需立即得到函數(shù)返回結(jié)果,使用bind();
apply()
使用 apply, 你可以繼承其他對象的方法:
這里apply()的第一個參數(shù)是null,在非嚴格模式下,第一個參數(shù)為null或者undefined時會自動替換為指向全局對象,apply()的第二個參數(shù)為數(shù)組或類數(shù)組。
call()
call()是apply()的語法糖,作用和apply()一樣,同樣可實現(xiàn)繼承,唯一的區(qū)別就在于call()接收的是參數(shù)列表,而apply()則接收參數(shù)數(shù)組。
bind()
bind()的作用與call()和apply()一樣,都是可以改變函數(shù)運行時上下文,區(qū)別是call()和apply()在調(diào)用函數(shù)之后會立即執(zhí)行,而bind()方法調(diào)用并改變函數(shù)運行時上下文后,返回一個新的函數(shù),供我們需要時再調(diào)用。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106186.html
摘要:理解文章中已經(jīng)比較全面的分析了在中的指向問題,用一句話來總結(jié)就是的指向一定是在執(zhí)行時決定的,指向被調(diào)用函數(shù)的對象。與和直接執(zhí)行原函數(shù)不同的是,返回的是一個新函數(shù)。這個新函數(shù)包裹了原函數(shù),并且綁定了的指向為傳入的。 理解 JavaScript this 文章中已經(jīng)比較全面的分析了 this 在 JavaScript 中的指向問題,用一句話來總結(jié)就是:this 的指向一定是在執(zhí)行時決定的,...
摘要:輸出的作用與和一樣,都是可以改變函數(shù)運行時上下文,區(qū)別是和在調(diào)用函數(shù)之后會立即執(zhí)行,而方法調(diào)用并改變函數(shù)運行時上下文后,返回一個新的函數(shù),供我們需要時再調(diào)用。 前言 js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改變函數(shù)運行時上下文,最終的返回值是你調(diào)用的方法的返回值,若該方法沒有返回值,則返回undefined。這幾個方法...
摘要:它們有明確的和成員函數(shù)的定義,只有的實例才能調(diào)用這個的成員函數(shù)。用和調(diào)用函數(shù)里用和來指定函數(shù)調(diào)用的,即指針的指向。同樣,對于一個后的函數(shù)使用或者,也無法改變它的執(zhí)行,原理和上面是一樣的。 函數(shù)里的this指針 要理解call,apply和bind,那得先知道JavaScript里的this指針。JavaScript里任何函數(shù)的執(zhí)行都有一個上下文(context),也就是JavaScri...
總結(jié)call,apply,bind方法的理解使用和區(qū)別。 call,apply,bind這三個方法在JavaScript中是用來改變函數(shù)調(diào)用的this指向。那么改變函數(shù)this指向有什么用呢?我們先來看一段代碼 var a= { name:harden, fn:function () { console.log(this.name); } } var b =...
在上一篇文章(《javascript高級程序設(shè)計》筆記:Function類型)中稍微提及了一下函數(shù)對象的屬性—this,在這篇文章中有深入的說明: 函數(shù)的三種簡單調(diào)用模式 1 函數(shù)模式 定義的函數(shù),如果單獨調(diào)用,不將其與任何對象關(guān)聯(lián),那么就是函數(shù)調(diào)用模式 function fn(num1, num2) { console.log(this); } // 直接在全局調(diào)用 fn();// w...
閱讀 1862·2021-11-22 15:24
閱讀 1316·2021-11-12 10:36
閱讀 3219·2021-09-28 09:36
閱讀 1848·2021-09-02 15:15
閱讀 2763·2019-08-30 15:54
閱讀 2400·2019-08-30 11:02
閱讀 2400·2019-08-29 13:52
閱讀 3549·2019-08-26 11:53