成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

call,apply,bind

Dongjie_Liu / 684人閱讀

摘要:介紹的一大特點(diǎn)是,函數(shù)存在定義時(shí)上下文和運(yùn)行時(shí)上下文以及上下文是可以改變的這樣的概念,都是為了改變函數(shù)運(yùn)行時(shí)上下文存在的,既改變函數(shù)體內(nèi)部的指向。更改函數(shù)的并返回新函數(shù),可以傳參。在函數(shù)運(yùn)行時(shí)使用的值。

1.介紹

javascript的一大特點(diǎn)是,函數(shù)存在[定義時(shí)上下文]和[運(yùn)行時(shí)上下文],以及[上下文是可以改變的]這樣的概念,apply,call 都是為了改變函數(shù)運(yùn)行時(shí)上下文(context)存在的,既改變函數(shù)體內(nèi)部 this 的指向。bind更改函數(shù)的this并返回新函數(shù),可以傳參。

Function.prototype.apply()

Function.prototype.call()

Function.prototype.bind()
2. apply
語(yǔ)法
func.apply(thisArg,[argsArray])
描述

在調(diào)用一個(gè)存在的函數(shù)時(shí)候,你可以為其指定一個(gè) this 對(duì)象,this 指當(dāng)前對(duì)象,也就是正在調(diào)用這個(gè)函數(shù)的對(duì)象。使用apply , 你可以只寫一次這個(gè)方法,然后在另外一個(gè)對(duì)象中繼承它,而不是用在新對(duì)象中重復(fù)寫該方法。

參數(shù)

thisArg :可選的。在函數(shù)func運(yùn)行時(shí)使用this的值。注意,this可能不是該方法看到的實(shí)際的值:如果這個(gè)函數(shù)在 非嚴(yán)格模式 下,則指定為 null 或 undefined 時(shí),會(huì)自動(dòng)替換為指向 全局對(duì)象原始值會(huì)被包裝。

argsArray : 可選的。一個(gè)數(shù)組類數(shù)組 對(duì)象,其中的數(shù)組元素將作為多帶帶的的參數(shù)傳給 func 函數(shù),如果改參數(shù)的值為 null 或者 undefined,則表示不需要傳入任何參數(shù)。

案列

1.用apply將數(shù)組添加到了一個(gè)數(shù)組

var arr1 = [1,2]
arr1.push(3);
arr1.push(4,5);  
console.log(arr1)  // [1,2,3,4,5]
var arr2 = [6,7,8]
arr1.push(arr2);
console.log(arr1) // [1, 2, 3, 4, 5, Array(3)]

我們可以使用push 將元素追加到數(shù)組中。并且,因?yàn)閜ush接受可變數(shù)量的參數(shù),我們也可以 一次推送多個(gè)元素。但是,如果我們傳遞一個(gè)數(shù)組來(lái)推送,它實(shí)際上會(huì)將該數(shù)組作為單個(gè)元素添加,而不是多帶帶添加元素,因此我們得到的是一個(gè)數(shù)組內(nèi)的數(shù)組。

var arr1 = [1,2,3];
var arr2 = [2,3,4];
var arr3 = arr1.concat(arr2);
console.log(arr3); // [1,2,3,2,3,4]

concat 確實(shí)具有我們想要的效果,但它并不是附加到現(xiàn)有數(shù)組,而是創(chuàng)建并返回一個(gè)新數(shù)組,但是我們想要附加到我們現(xiàn)有的陣列...那么現(xiàn)在呢?寫一個(gè)循環(huán)?當(dāng)然不是,我們可以利用apply 實(shí)現(xiàn)。

var array = ["a","b"];
var element = [0,1,2];
array.push.apply(array,element);
console.log(array);  // ["a","b",0,1,2]

2.使用apply和內(nèi)置函數(shù)
聰明的apply用法允許你在某些本來(lái)需要寫成遍歷數(shù)組變量的任務(wù)中使用內(nèi)建的函數(shù)。如下面的 利用Math.max/Maxt.min 求一個(gè)數(shù)組中的最大/最小值。

var number = [5,6,2,3,7];
var max = Math.max.apply(null,number)  
var min = Math.min.apply(null,number)
基本等同于
Math.max(number[0],number[1],...) 或 Math.max(5,6,...)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105735.html

相關(guān)文章

  • 前端基礎(chǔ):call,apply,bind的的理解

    摘要:和區(qū)別其實(shí)他們的作用是一樣的,只是傳遞的參數(shù)不一樣而已。接受個(gè)參數(shù),第一個(gè)參數(shù)指定了函數(shù)體內(nèi)對(duì)象的指向,第二個(gè)參數(shù)為數(shù)組或者一個(gè)類數(shù)組??磦€(gè)栗子一個(gè)有意思的事在中,多次是無(wú)效的。而則會(huì)立即執(zhí)行函數(shù)。 背景 前兩天在做小程序的需求的時(shí)候用到bind的時(shí)候才想起自己對(duì)這三的東西的了解比較淺薄,這個(gè)時(shí)候用的時(shí)候就有點(diǎn)怕。時(shí)候還是要好好學(xué)習(xí)下,理解下怎么玩。 正文 先說(shuō)call 和 apply...

    netmou 評(píng)論0 收藏0
  • JS中的call、applybind方法詳解

    摘要:不能應(yīng)用下的等方法。首先我們可以通過(guò)給目標(biāo)函數(shù)指定作用域來(lái)簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無(wú)效的。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...

    zombieda 評(píng)論0 收藏0
  • JS基礎(chǔ)篇--call、apply、bind方法詳解

    摘要:首先我們可以通過(guò)給目標(biāo)函數(shù)指定作用域來(lái)簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無(wú)效的。而則會(huì)立即執(zhí)行函數(shù)。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...

    lastSeries 評(píng)論0 收藏0
  • this總結(jié)【2】—— call/applybind

    摘要:和概覽我們要將歸為一類,單獨(dú)歸為一類三者的共同點(diǎn)是都可以指定和都是綁定在的原型上的,所以的實(shí)例都可以調(diào)用這三個(gè)方法至于為什么,看完這篇文章你就懂了如果你不懂什么是實(shí)例的話,請(qǐng)移步深入淺出面向?qū)ο蠛驮透拍钇钊霚\出面向?qū)ο蠛驮透拍钇谝粋€(gè) 1.call/apply和bind概覽 我們要將call/apply歸為一類,bind單獨(dú)歸為一類 三者的共同點(diǎn)是都可以指定this call/...

    wudengzan 評(píng)論0 收藏0
  • 理解JavaScript中的call,applybind方法

    摘要:輸出的作用與和一樣,都是可以改變函數(shù)運(yùn)行時(shí)上下文,區(qū)別是和在調(diào)用函數(shù)之后會(huì)立即執(zhí)行,而方法調(diào)用并改變函數(shù)運(yùn)行時(shí)上下文后,返回一個(gè)新的函數(shù),供我們需要時(shí)再調(diào)用。 前言 js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改變函數(shù)運(yùn)行時(shí)上下文,最終的返回值是你調(diào)用的方法的返回值,若該方法沒(méi)有返回值,則返回undefined。這幾個(gè)方法...

    chaosx110 評(píng)論0 收藏0
  • javascript關(guān)于this 以及this的顯示設(shè)置(apply、call、bind)

    摘要:如果連續(xù)呢結(jié)果會(huì)是什么結(jié)果還是第一個(gè)原因是,在中,多次是無(wú)效的。更深層次的原因,的實(shí)現(xiàn),相當(dāng)于使用函數(shù)在內(nèi)部包了一個(gè),第二次相當(dāng)于再包住第一次故第二次以后的是無(wú)法生效的。 this 1.其實(shí)js中的this沒(méi)那么難理解,當(dāng)找不到this時(shí)記住一句話:誰(shuí)調(diào)我,我就指誰(shuí)!new 誰(shuí)指誰(shuí) function text1(){ console.log(this); //指wind...

    LiveVideoStack 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<