国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

apply與call方法

SHERlocked93 / 2769人閱讀

摘要:調用了方法,參數是通過將數組轉換為參數列表的集合通常在什么情況下,可以使用類似等之類的特殊用法一般在目標函數只需要個參數列表,而不接收一個數組的形式,可以通過的方式巧妙地解決這個問題。

apply與call可以改變函數內部this的指向
apply是函數對象本身身上的方法,可直接用
call也可以調用函數

function sum (a, b, c, d){
    console.lo(a+b+c+d);
    console.log(this === obj)
}

var obj = {
    name: "xiaoming",
    age: 18,
    sex: "男"
}
sum(1,2,3,4);  

毫無疑問,thid===obj肯定是false,因為調用函數sum是window,所以this是window,不等于obj

但是如果這樣子調用sum.call(obj,1,2,3,4);
this就是指向obj

為什么要用call呢?
因為它的參數除了接收實際參數外,還可以接收一個參數代表this
它的第一個參數就是你希望函數里面的this是誰,后面的才是實參

而apply的基本功能和call基本功能是一樣的,區別在于傳遞參數的語法不一樣
實參是需要拿數組包住
sum.apply(obj,[1,2,3,4]);

apply的一些巧妙用法

1)Math.max 可以實現得到數組中最大的一項:
因為Math.max不支持Math.max([param1,param2])也就是數組,但是它支持Math.max(param1,param2...),所以可以根據apply的特點來解決 var max=Math.max.apply(null,array),這樣就輕易的可以得到一個數組中的最大項(apply會將一個數組轉換為一個參數接一個參數的方式傳遞給方法)
這塊在調用的時候第一個參數給了null,這是因為沒有對象去調用這個方法,我只需要用這個方法幫我運算,得到返回的結果就行,所以直接傳遞了一個null過去。
用這種方法也可以實現得到數組中的最小項:Math.min.apply(null,array)

(2)
Array.prototype.push可以實現兩個數組的合并
同樣push方法沒有提供push一個數組,但是它提供了push(param1,param2...paramN),同樣也可以用apply來轉換一下這個數組,即:
var arr1=new Array("1","2","3");
var arr2=new Array("4","5","6");
Array.prototype.push.apply(arr1,arr2); //得到合并后數組的長度
因為push就是返回一個數組的長度,也可以這樣理解。arr1調用了push方法,參數是通過apply將數組轉換為參數列表的集合
通常在什么情況下,可以使用apply類似Math.max等之類的特殊用法:
一般在目標函數只需要n個參數列表,而不接收一個數組的形式,可以通過apply的方式巧妙地解決這個問題。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103201.html

相關文章

  • apply call 詳細深入理解

    apply 與 call 介紹 function f1(x, y) { console.log(結果是: + (x + y) + this); } f1(10, 20); //函數的調用 // 結果是:30[object Window] // 此時的 f1 實際上是當作對象來使用的,對象可以調用方法 f1.apply(); // 結果是:NaN[object Window] f1.ca...

    Hegel_Gu 評論0 收藏0
  • 深入淺出JavaScript之call()、apply()方法

    摘要:的作用在中,方法和方法都是為了改變函數運行時上下文而存在的,換句話說就是為了改變函數體內部的指向。歡迎前端大牛糾正錯誤,如有錯誤我會及時改正。 寫在前面: 隔了很長時間了,也不知道寫點什么。最近一直在研究ES6,一直想寫出來的文章能對初學者或者是在學習JS路上有所幫助的。這就是我的初衷。 call、apply的作用 在JavaScript中,call()方法和apply()方法都是為了...

    Cympros 評論0 收藏0
  • 「干貨」細說 callapply 以及 bind 的區別和用法

    摘要:的調用者,將會指向這個對象。此外,還可以擴展自己的其他方法。的使用最后來說說。不同的是,方法的返回值是函數,并且需要稍后調用,才會執行。而和則是立即調用。總結和的主要作用,是改變對象的執行上下文,并且是立即執行的。 前言 上一篇文章 《「前端面試題系列4」this 的原理以及用法》 中,提到了 call 和 apply。 它們最主要的作用,是改變 this 的指向。在平時的工作中,除了...

    GraphQuery 評論0 收藏0
  • 【JavaScript】callapply兄弟列傳

    摘要:具體可參考下面代碼定義到原型鏈上的方法這里沒有繼承父類中的方法張三張三太史公曰總結一下與兄弟倆的任務使用一個指定的值和若干個指定的參數值的前提下調用某個函數或方法。本篇人物小傳自此結束。 在JavaScript中,有這么倆貨,一個叫call,一個叫apply,它們倆工作幾乎一毛一樣,但是也有所區別,曾經對這個知識點非常困惑,看過幾篇博客也沒搞清楚這哥倆到底打算要干個啥,直到某天仔細研究...

    tuniutech 評論0 收藏0
  • js 面試官想了解你有多理解call,apply,bind?

    摘要:返回值這段在下方應用中有詳細的示例解析。回調函數丟失的解決方案綁定回調函數的指向這是典型的應用場景綁定指向,用做回調函數。 showImg(https://segmentfault.com/img/remote/1460000019971331?w=1024&h=680); 函數原型鏈中的 apply,call 和 bind 方法是 JavaScript 中相當重要的概念,與 this...

    wuaiqiu 評論0 收藏0
  • 回味JS基礎:call apply bind

    摘要:使用方法調用匿名函數在下例中的循環體內,我們創建了一個匿名函數,然后通過調用該函數的方法,將每個數組元素作為指定的值執行了那個匿名函數。這個匿名函數的主要目的是給每個數組元素對象添加一個方法,這個方法可以打印出各元素在數組中的正確索引號。 原文:回味JS基礎:call apply 與 bind 在JavaScript中,call、apply和bind是Function對象自帶的三個方法...

    plokmju88 評論0 收藏0

發表評論

0條評論

SHERlocked93

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<