久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      es6怎么判斷一個(gè)變量是否為數(shù)組

      判斷方法:1、利用Array對(duì)象的isArray()函數(shù)來判斷變量是不是數(shù)組,語法“Array.isArray(obj)”,如果是數(shù)組返回true,否則返回false。2、通過“Object.prototype.toString()”來判斷,語法“Object.prototype.toString.apply(a) === '[object Array]'”。

      es6怎么判斷一個(gè)變量是否為數(shù)組

      本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

      JS的弱類型機(jī)制導(dǎo)致判斷變量類型是初級(jí)前端開發(fā)者面試時(shí)的必考題,一般我都會(huì)將其作為考察候選人第一題,然后基于此展開。

      在ES5中判斷變量是否為數(shù)組

      在ES5中,我們至少有如下5種方式去判斷一個(gè)值是否數(shù)組:

      var a = [];  // 1.基于instanceof  a instanceof Array;  // 2.基于constructor  a.constructor === Array;  // 3.基于Object.prototype.isPrototypeOf  Array.prototype.isPrototypeOf(a);  // 4.基于getPrototypeOf  Object.getPrototypeOf(a) === Array.prototype;  // 5.基于Object.prototype.toString  Object.prototype.toString.apply(a) === '[object Array]';
      登錄后復(fù)制

      以上,除了Object.prototype.toString外,其它方法都不能正確判斷變量的類型。

      要知道,代碼的運(yùn)行環(huán)境十分復(fù)雜,一個(gè)變量可能使用渾身解數(shù)去迷惑它的創(chuàng)造者。且看:

      var a = {     __proto__: Array.prototype };  // 分別在控制臺(tái)試運(yùn)行以下代碼  // 1.基于instanceof  a instanceof Array; // => true  // 2.基于constructor  a.constructor === Array; // => true  // 3.基于Object.prototype.isPrototypeOf  Array.prototype.isPrototypeOf(a); // => true  // 4.基于getPrototypeOf  Object.getPrototypeOf(a) === Array.prototype; // => true
      登錄后復(fù)制

      以上,4種方法將全部返回true,為什么呢?我們只是手動(dòng)指定了某個(gè)對(duì)象的__proto__屬性為Array.prototype,便導(dǎo)致了該對(duì)象繼承了Array對(duì)象,這種毫不負(fù)責(zé)任的繼承方式,使得基于繼承的判斷方案瞬間土崩瓦解。

      不僅如此,我們還知道,Array是堆數(shù)據(jù),變量指向的只是它的引用地址,因此每個(gè)頁面的Array對(duì)象引用的地址都是不一樣的。iframe中聲明的數(shù)組,它的構(gòu)造函數(shù)是iframe中的Array對(duì)象。如果在iframe聲明了一個(gè)數(shù)組x,將其賦值給父頁面的變量y,那么在父頁面使用y instanceof Array ,結(jié)果一定是false的。而最后一種返回的是字符串,不會(huì)存在引用問題。實(shí)際上,多頁面或系統(tǒng)之間的交互只有字符串能夠暢行無阻。

      在ES6中判斷變量是否為數(shù)組

      鑒于數(shù)組的常用性,在ES6中新增了Array.isArray方法,使用此方法判斷變量是否為數(shù)組,則非常簡(jiǎn)單,如下:

      Array.isArray([]); // => true  Array.isArray({0: 'a', length: 1}); // => false
      登錄后復(fù)制

      實(shí)際上,通過Object.prototype.toString去判斷一個(gè)值的類型,也是各大主流庫的標(biāo)準(zhǔn)。因此Array.isArray的polyfill通常長這樣:

      if (!Array.isArray){      Array.isArray = function(arg){          return Object.prototype.toString.call(arg) === '[object Array]';      };  }
      登錄后復(fù)制

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)