<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 1. Object.prototype.toString.call() 每一個繼承 Object 的對象都有`toString`方法,如果`toString`方法沒有重寫的話,會返回`[Object type]`,其中 type 為對象的類型。但當除了 Object 類型的對象外,其他類型直接使用`toString`方法時,會直接返回都是內容的字符串,所以我們需要使用call或者apply方法來改變toString方法的執行上下文。 ~~~js const an = ['Hello','An']; an.toString(); // "Hello,An" Object.prototype.toString.call(an); // "[object Array]" ~~~ 這種方法對于所有基本的數據類型都能進行判斷,即使是 null 和 undefined 。 ~~~js Object.prototype.toString.call('An') // "[object String]" Object.prototype.toString.call(1) // "[object Number]" Object.prototype.toString.call(Symbol(1)) // "[object Symbol]" Object.prototype.toString.call(null) // "[object Null]" Object.prototype.toString.call(undefined) // "[object Undefined]" Object.prototype.toString.call(function(){}) // "[object Function]" Object.prototype.toString.call({name: 'An'}) // "[object Object]" ~~~ `Object.prototype.toString.call()`常用于判斷瀏覽器內置對象時。 更多實現可見[談談 Object.prototype.toString](https://juejin.im/post/591647550ce4630069df1c4a) ### 2. instanceof `instanceof`? 的內部機制是通過判斷對象的原型鏈中是不是能找到類型的?`prototype`。 使用`instanceof`判斷一個對象是否為數組,`instanceof`會判斷這個對象的原型鏈上是否會找到對應的`Array`的原型,找到返回`true`,否則返回`false`。 ~~~js [] instanceof Array; // true ~~~ 但`instanceof`只能用來判斷對象類型,原始類型不可以。并且所有對象類型 instanceof Object 都是 true。 ~~~js [] instanceof Object; // true ~~~ ### 3. Array.isArray() * 功能:用來判斷對象是否為數組 * instanceof 與 isArray 當檢測Array實例時,`Array.isArray`優于`instanceof`,因為`Array.isArray`可以檢測出`iframes` ~~~js var iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; var arr = new xArray(1,2,3); // [1,2,3] // Correctly checking for Array Array.isArray(arr); // true Object.prototype.toString.call(arr); // true // Considered harmful, because doesn't work though iframes arr instanceof Array; // false ~~~ * `Array.isArray()`與`Object.prototype.toString.call()` `Array.isArray()`是ES5新增的方法,當不存在`Array.isArray()`,可以用`Object.prototype.toString.call()`實現。 ~~~js if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[object Array]'; }; } ~~~ ## 摘自 [ 第 21 題:有以下 3 個判斷數組的方法,請分別介紹它們之間的區別和優劣](https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/23)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看