摘要:如果網(wǎng)頁中包含多個框架,那實際上就存在兩個以上不同的全局執(zhí)行環(huán)境,從而存在兩個以上不同版本的構(gòu)造函數(shù)。如果你從一個框架向另一個框架傳入一個數(shù)組,那么傳入的數(shù)組與在第二個框架中原生創(chuàng)建的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。
如何檢測某個變量是否為數(shù)組?
《javascript 高級程序設(shè)計》原文摘錄:
自從 ECMAScript 3 做出規(guī)定以后,就出現(xiàn)了確定某個對象是不是數(shù)組的經(jīng)典問題。對于一個網(wǎng)頁, 或者一個全局作用域而言,使用 instanceof 操作符就能得到滿意的結(jié)果: if (value instanceof Array){ //對數(shù)組執(zhí)行某些操作 } instanceof 操作符的問題在于,它假定只有一個全局執(zhí)行環(huán)境。如果網(wǎng)頁中包含多個框架,那實 際上就存在兩個以上不同的全局執(zhí)行環(huán)境,從而存在兩個以上不同版本的 Array 構(gòu)造函數(shù)。如果你從 一個框架向另一個框架傳入一個數(shù)組,那么傳入的數(shù)組與在第二個框架中原生創(chuàng)建的數(shù)組分別具有各自 不同的構(gòu)造函數(shù)。 為了解決這個問題,ECMAScript 5 新增了 Array.isArray() 方法。這個方法的目的是最終確定某 個值到底是不是數(shù)組,而不管它是在哪個全局執(zhí)行環(huán)境中創(chuàng)建的。這個方法的用法如下。 if (Array.isArray(value)){ //對數(shù)組執(zhí)行某些操作 } 支持 Array.isArray() 方法的瀏覽器有 IE9+、Firefox 4+、Safari 5+、Opera 10.5+和 Chrome。
那么問題來了,如何在尚未實現(xiàn)這個方法中的瀏覽器中準確檢測數(shù)組
由于原生數(shù)組的構(gòu)造函數(shù)名與全局作用域無關(guān),因此用toString()方法,保證返回一樣的結(jié)果
function isArray(value) { return Object.prototype.toString.call(value) === "[object Array]"; }
這樣的方法就可以比較完美的解決判斷是否為數(shù)組了,同樣也可以判斷是不是函數(shù)
function isFunction(value) { return Object.prototype.toString.call(value) === "[object Function]"; }
是不是正則表達式
function isRegExp(value) { return Object.prototype.toString.call(value) === "[object RegExp]"; }
雖然這樣貌似是解決了問題,實際上這還是會存在問題:Object.prototpye.toString()本身也可能會被修改
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84643.html
摘要:為了每個對象都能通過來檢測,需要以或者的形式來調(diào)用,傳遞要檢查的對象作為第一個參數(shù),稱為。對象都是動態(tài)的,這就意味著每次訪問對象,都會運行一次查詢。是語言中立的用于訪問和操作和文檔。 一、第三章 基本概念: 1.理解參數(shù) 1.1 可以向函數(shù)中傳遞任意數(shù)量的參數(shù),并且可以通過arguments對象來訪問這些參數(shù)。 1.2 arguments對象只是類似數(shù)組,它通過length來確定傳進來...
摘要:變量的特點變量是松散類型的,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)。 變量的特點 js變量是松散類型的,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)。換句話說, 每個變量僅僅是一個用于保存值的占位符而已 js變量可以用來保存任何值,未經(jīng)過初始化的變量,會保存一個特殊的值—undefined,如:var msg; js變量的初始化并不會為它標記類型;初始化的過程就是給變量賦一個值那...
摘要:說明此摘要筆記系列是我最近看高級程序設(shè)計第版隨手所記。摘要筆記本身沒有系統(tǒng)性,沒有全面性可言,寫在這里供有一定基礎(chǔ)的前端開發(fā)者參考交流。對每一項運行給定函數(shù),返回該函數(shù)會返回的項組成的數(shù)組。是的反操作是的反操作第一部分結(jié)束。 說明: 此摘要筆記系列是我最近看《JavaScript高級程序設(shè)計(第3版)》隨手所記。 里面分條列舉了一些我認為重要的、需要記下的、對我有幫助的點,是按照我看...
摘要:當以非構(gòu)造函數(shù)形式被調(diào)用時,等同于。并且,函數(shù)執(zhí)行完畢后,其活動對象不會被銷毀,因為匿名函數(shù)的作用域鏈仍然在引用這個活動對象。知道閉包被銷毀,創(chuàng)建函數(shù)的活動對象才會被回收。 本著盡可能多的完善基礎(chǔ)知識,打好基礎(chǔ),做一條有夢想的咸魚。 1.數(shù)據(jù)類型 基本數(shù)據(jù)類型:Undefined,Null,Boolean,Number,String,一種復(fù)雜數(shù)據(jù)類型Object 2.typeof操...
摘要:布爾值,表示是否設(shè)置了標志。正則表達式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回正則表達式的實例方法方法是否匹配基本語法參數(shù)為正則表達式為所要匹配的字符串返回值布爾值在模式與該參數(shù)匹配的情況下返回否則,返回。 高程書中對正則部分介紹的偏少,特別是元字符部分幾乎沒有介紹;我找了幾篇不錯的博客作為收錄:正則表達式30分鐘入門教程正則表達式-理論基礎(chǔ)篇正則表達式-基礎(chǔ)實戰(zhàn)...
閱讀 2810·2021-10-26 09:48
閱讀 1671·2021-09-22 15:22
閱讀 4028·2021-09-22 15:05
閱讀 608·2021-09-06 15:02
閱讀 2607·2019-08-30 15:52
閱讀 2107·2019-08-29 18:38
閱讀 2755·2019-08-28 18:05
閱讀 2332·2019-08-26 13:55