改變函數(shù)this的指向。嚴格模式、高階函數(shù)缀皱、閉包

1 call

obj.call(改變this指向的對象,參數(shù)1斗这,參數(shù)3) 參數(shù)可選
1.1 call 第一可調(diào)用函數(shù) 第二可以改變函數(shù)的this指向
1.2 call 的主要作用他可以實現(xiàn)繼承

         <script>

    var o = {
        name:'andy'
    }
    function fn(a,b){
        console.log(this);
        console.log(a+b);
    }
    fn.call(o,1,2)

</script> 繼承
       function Father(user,age,sex){
        this.user=user;
        this.age=age;
        this.sex= sex;
    }
    function Son(uset,age,sex){
        Father.call(this,uset,age,sex);
    }
    var son =new Son('123',18,'nan')
apply

fun.apply(thisArg,[argsArray]);
thisArg:在fun函數(shù)運行時指定的this
artgsArray:船體的值,必須要包含在數(shù)據(jù)里
返回值就是函數(shù)的返回值啤斗,應為它要調(diào)用函數(shù)。

 <script>
    var o = {
        name:'ssss'
    }
    function fn (arr){
        console.log(this);
        console.log('------');
        console.log(arr);
        }
    //1.這里改變函數(shù)內(nèi)部this  的指向赁咙,同時調(diào)用函數(shù)
    //2.參數(shù)必須是數(shù)組格式钮莲。
    fn.apply(o,['1']);
    // 3.apply的主要應用
    var arr=[1,33,4,45,56,22,22];
    var max = Math.max.apply(Math,arr);
    console.log(max);
</script>
bind

bind()方法不會調(diào)用函數(shù),但是能改變函數(shù)內(nèi)部this指向彼水。
fun.bind(thisArg,arg1,arg2,...)

  • thisArg:在fun函數(shù)運行時指定的this

  • arg1,arg2 傳遞的其他參數(shù)

  • 返回由指定的this之后初始化參數(shù)改造的原函數(shù)拷貝崔拥。

    <script>
      var o ={
      name:'name'
    }
    function fn (a,b){
      console.log(this);
      console.log(a+b);
    }
    //這里返回的是改變 this后的新函數(shù)
    var f=fn.bind(o,1,2);
    // 調(diào)用函數(shù)
    f();
    </script>
    
call apply bind 總結
  1. call apply 會調(diào)用函數(shù),并改變函數(shù)內(nèi)部this指向
  2. call apply 傳遞的參數(shù)不一樣凤覆,call 傳遞闡述arg1链瓦,arg2形式。apply必須是數(shù)組的形式盯桦。
    3.bind 不會調(diào)用函數(shù)慈俯,可以變函數(shù)內(nèi)部的this指向。
    主要應用
    1.call 主要做繼承拥峦、
    2.apply 經(jīng)常和數(shù)組相關贴膘,比如借助數(shù)學對象實現(xiàn)數(shù)組最大值,最小值略号。
    3.bind 不調(diào)用 函數(shù)刑峡,但是還想改變this指向。比如改變定時器內(nèi)部的this 指向
嚴格模式

ES5在IE10 以上的版本才會被支持玄柠。

  1. 消除了javascript 語法的一些不合理突梦、不嚴謹之處,減少了一些怪異行為
    2.消除了一些不安全的地方
    3.提高變異效率
    4.為未來語法的javascript 做好了鋪墊
    嚴格模式的開啟
    1.為腳本開啟嚴格模式
    直接寫 'use strict'

    <script>
     'use strict'
     // 下面的js diamante會嚴格執(zhí)行代碼
    </script>
    

2 為函數(shù)開啟嚴格模式
在指定的函數(shù)中寫 ‘use strict’

<script>
    function fn(){
        'use strict'

    }
    function fun(){

    }
</script>

3 嚴格模式的變化

1 . 變量 變量必要要先聲明后使用
2 . 不能刪除已經(jīng)申明好的變量羽利。
3 . 以前全局作用下this 指向的是window 宫患,在嚴格模式下執(zhí)行的undefined。
4 . 以前構造函數(shù)不加new 可以直接調(diào)用铐伴,在嚴格模式下必須要new一下撮奏。
5.定時器this 還是指向window
6.事件、對象還是指向調(diào)用者当宴。

嚴格模式下函數(shù)變化

1 . 不能定義相同的形參畜吊。
2 . 函數(shù)必須聲明在頂層。

高階函數(shù)

高階函數(shù)是對其他函數(shù)進行操作的函數(shù)户矢。它接收函數(shù)作為參數(shù)或?qū)⒑瘮?shù)作為返回值輸出玲献。
下面就是將函數(shù)作為參數(shù)

 <script>
      function fn(callBack){\
        callBack&&callBack();
        }
 </script>
  fn(function(){
  alert{'hi'};
  }

閉包

閉包:指有權訪問另一個函數(shù)作用域中變量的函數(shù)。
閉包的作用:延伸了變量的作用范圍。
下面代碼在fun函數(shù)中訪問了fn函數(shù)中的變量num fn 函數(shù)就是閉包捌年。

  <script>
    function fn(){
        var num =10;
        function fun(){
            console.log(num);
        }  
        fun();

    }
    fn();

</script>

淺拷貝和深拷貝

  1. 淺拷貝只拷貝一層瓢娜,更深層次對象級別的只拷貝引用】

  2. 深拷貝是多層的,每一層都會拷貝
    3.在ES6中可以直接使用Object.assign淺拷貝(要拷貝成的對象礼预,拷貝的對象)

    Object.assign(o,obj);
    

深拷貝

    <script>
    var obj = {
        id:1,
        age:2,
        msg:{
            name1:1,
            sex:2
        },
        color:[1,3,56]
    }
    var o ={}
    // for(var k in obj){
    //     o[k] = obj[k];
    // }

    function deepCopu(newObj,oldObj){
        for(var k in oldObj){
            var item = oldObj[k];
            if(item instanceof Array){
            // 這里要注意
                newObj[k]={};
                deepCopu(newObj[k],item);
            }else if(item instanceof Object){
                newObj[k]={};
                deepCopu(newObj[k],item);
            }else{
                newObj[k]=item;
            }
        }
    }
    deepCopu(o,obj);
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眠砾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子托酸,更是在濱河造成了極大的恐慌褒颈,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件励堡,死亡現(xiàn)場離奇詭異谷丸,居然都是意外死亡,警方通過查閱死者的電腦和手機应结,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門刨疼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹅龄,你說我怎么就攤上這事揩慕。” “怎么了砾层?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵漩绵,是天一觀的道長。 經(jīng)常有香客問我肛炮,道長止吐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任侨糟,我火速辦了婚禮碍扔,結果婚禮上,老公的妹妹穿的比我還像新娘秕重。我一直安慰自己不同,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布溶耘。 她就那樣靜靜地躺著二拐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凳兵。 梳的紋絲不亂的頭發(fā)上百新,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音庐扫,去河邊找鬼饭望。 笑死仗哨,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的铅辞。 我是一名探鬼主播厌漂,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼斟珊!你這毒婦竟也來了苇倡?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤囤踩,失蹤者是張志新(化名)和其女友劉穎雏节,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體高职,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年辞州,在試婚紗的時候發(fā)現(xiàn)自己被綠了怔锌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡变过,死狀恐怖埃元,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情媚狰,我是刑警寧澤岛杀,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站崭孤,受9級特大地震影響类嗤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辨宠,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一遗锣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嗤形,春花似錦精偿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至霹期,卻和暖如春叶组,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背经伙。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工扶叉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勿锅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓枣氧,卻偏偏與公主長得像溢十,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子达吞,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 前言 面試官出很多考題张弛,基本都會變著方式來考察this指向,看候選人對JS基礎知識是否扎實酪劫。讀者可以先拉到底部看總...
    若川i閱讀 1,106評論 0 10
  • 1.概念 在JavaScript中吞鸭,this 是指當前函數(shù)中正在執(zhí)行的上下文環(huán)境,因為這門語言擁有四種不同的函數(shù)調(diào)...
    BluesCurry閱讀 1,127評論 0 2
  • 函數(shù)的調(diào)用方式?jīng)Q定了 this的指向不同: 1. 普通函數(shù)調(diào)用麦箍,此時this指向window function f...
    yuanjiex閱讀 1,494評論 0 2
  • 總覺得自己還小挟裂,可一畢業(yè)享钞,兜兜轉(zhuǎn)轉(zhuǎn)了兩三年,突然就被七大姑八大姨逼婚了诀蓉。自己也不知道是怎么走到該結婚的年齡的栗竖。不知...
    夢魂難斷閱讀 369評論 0 0
  • 讓父母的安享晚年划滋,安康喜樂! 讓子女快樂成長埃篓,平安健康处坪! 這就是我此生最大的責任 擁抱你,親愛的生命架专,讓我肩負此使命
    悠米優(yōu)米閱讀 52評論 0 0