亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

直面JavaScript中的30個疑難雜癥

公明2020 Web前端工程師
難度中級
時長 5小時 3分
學習人數
綜合評分9.57
19人評價 查看評價
9.7 內容實用
9.8 簡潔易懂
9.2 邏輯清晰
  • ?

    1.關于typeof null,機器碼后三位000(與對象完全一樣)

    2. typeof function 為什么是function而不是object,在于是否存在call方法

    查看全部
  • // 什么是棧:計算機為原始類型開辟的一塊內存空間 string number ...

    // 什么是堆:計算機為引用類型開辟的一塊內存空間 object

    var a = 'MOOC';

    var b = a;

    console.log(a, b); // MOOC MOOC2


    var c = {key: 1};

    var d = c;

    d.key = 2;

    console.log(c, d); // 2, 2


    // ['MOOC', 'MOOC2']

    // c d ['x00000018', 'x00000018'] -> { {key: 1} }

    // c d x00000018 -> {key: 2}

    查看全部
  • // instanceof 檢測 bool: true false

    // A instanceof B

    console.log([] instanceof? Array); // true

    console.log({} instanceof? Object); // true

    console.log(new Date instanceof? Date); // true

    function Person(){};

    console.log(new Person() instanceof? Person); // true


    console.log([]?instanceof? Object); // true

    console.log(new Date instanceof? Object); // true

    console.log(new Person() instanceof? Object); // true

    //?instanceof 原型鏈 A?instanceof B true, B?instanceof C true

    // 兒子 爸爸 爺爺


    if(typeof(val) !== undefined) {}


    console.log(Object.prototype.toString.call('1')); // string

    console.log(Object.prototype.toString.call([])); // Array

    查看全部
  • // typeof 檢測 返回的是對應的數據類型

    console.log(typeof(123)); // number

    console.log(typeof(true)); // boolean

    console.log(typeof('MOOC')); // string

    console.log(typeof(undefined)); // undefined


    console.log(typeof(null)); // object 為什么不null

    // 計算機typeof 返回的數據類型 機器碼 01011: 000 => object

    // null 000000...000 => object

    // js bug?


    console.log(typeof([])); // object? // 引用

    console.log(typeof(new Date())); // object

    console.log(typeof({})); // object


    console.log(typeof(function(){})); // function

    console.log(typeof(Array)); // function 為什么不是object

    // typeof 引用類型 object: object function

    // object 定義一個[[call]] 如果已經定義了call方法就是 function 不是 object


    var str = 'MOOC';

    console.log(typeof(str)); // string


    var str1 = new String('MOOC'); // 實例化后的對象

    console.log(str1); // {} key : value 0:M 1:O ....

    console.log(typeof(str1)); //?object

    查看全部
  • http://img1.sycdn.imooc.com//627885060001b8ee07000062.jpg

    淺拷貝兩種方式:遍歷 和 Object.create()

    查看全部
  • 6252cdff0001f35a09600540.jpg^qUxJg$c43abd01a5fabbba66466a22476d2957b84506584
    查看全部
  • console.log(Object.prototype.toString.call('1')
    console.log(Object.prototype.toString.call('[]')
    查看全部
  • todo 沒看懂

    查看全部
  • 包裝對象:String Number Boolean

    查看全部
  • JS中this的用法


    1. 代指當前調用這個對象

    2. 4中綁定規則:默認綁定、隱式綁定、顯示綁定、new綁定。優先級從低到高。

    3. 改變this指向:call? apply? bind

    4. 手寫一個bind方法


    查看全部
  • js中New的執行過程有哪幾步


    • 實例化對象

    共4步驟:

    1. 創建一個新的對象obj:var obj = new Object()

    2. 把obj的proto指向構造函數的prototype對象 實現繼承:obj.__proto__ = Fn.prototype

    3. 將步驟1新創建的對象obj作為this的上下文:var result = Fn.call(obj)

    4. 返回創建的對象obj(如果該函數沒有返回對象,則返回this)

      if( typeof result === 'object' ){

      ? ? return result? //func = result

      }else{

      ? ? return obj????//func = obj

      }

    查看全部
  • function對象call、apply、bind

    ????Function.apply ( obj, args )//args為數組

    ????Function.call ( obj, args )//args為單個參數

    一、apply方法

    1. apply()方法調用一個函數,其具有一個指定的this值,以及作為一個數組(或類數組對象)提供的參數。

    2. apply方法能劫持另一個對象的方法,繼承另外一個對象的屬性

    3. function.apply(obj, args)方法能接受兩個參數

    4. obj:這個對象將代替function類里this對象

    5. args:這個是數組,他將作為參數傳給funcrion(args--->arguments)

    二、call方法

    1. call方法與apply作用相同,唯一區別是第二個args參數

    2. call:單個參數傳入,apply:以數組形式傳入


    三、bind方法

    1. bind:類似于call 但是與其不用的是call調用之后可以立即執行,但是bind需要用一個變量進行接收之后再執行。

    查看全部
  • js中閉包的概念:

    1. 是引用了自由變量的函數這個被引用的自由變量將和這個函數一同存在,即使已經離開了,創造它的環境也不例外。

    2. 另一種說法認為閉包是由函數和其相關的引用環境組合而成,實現信息的駐留(信息的保持,引用在空間不銷毀)。

    ++的解釋:加號在前取新值,加號在后取舊值


    可以使用立即執行函數來實現閉包

    閉包的缺點:閉包導致內存會駐留,如果是大量對象的閉包環境會造成內存泄漏

    查看全部
  • js重載的概念

    • 在程序中可以定義相同名字,不同參數的形式的不同函數。

    • 函數在調用的函數的時候,自動識別不同參數對應的函數,實現了相同函數名不同的函數調用

    • javascript本身沒有重載的,但是可以通過arguments來實現函數重載


    查看全部
  • ????http://img1.sycdn.imooc.com//6215d1f90001baf107760320.jpg原型鏈

    查看全部

舉報

0/150
提交
取消
課程須知
1、有一定的前端JavaScript基礎的用戶 2、想對JavaScript有更深層次的了解,或者是對常見JavaScript面試題難以理解的用戶 3、技術儲備:JavaScript、HTML、CSS
老師告訴你能學到什么?
JavaScript中比較重要的知識點,例如數據類型檢測;面試中常見的閉包、作用域和作用域鏈、執行上下文等等;還有JavaScript中的原型、原型鏈,面向對象問題,以及實戰開發的運用。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!