摘要:判斷一個數(shù)據(jù)是否是數(shù)組,在以往的實現(xiàn)中,可以基于鴨子類型的概念來判斷,比如判斷這個數(shù)據(jù)有沒有屬性,有沒有方法或者方法等。所以我們可以編寫一系列的函數(shù)。代碼如下輸出我們還可以用循環(huán)語句,來批量注冊這些函數(shù)輸出輸出
判斷一個數(shù)據(jù)是否是數(shù)組,在以往的實現(xiàn)中,可以基于鴨子類型的概念來判斷,比如判斷這個數(shù)據(jù)有沒有l(wèi)ength 屬性,有沒有sort方法或者slice 方法等。但更好的方式是用Object.prototype.toString來計算。
Object.prototype.toString.call(obj)返回一個字符串,比如Object.prototype.toString.call([1,2,3])總是返回"[objectArray]",而Object.prototype.toString.call(“str”)總是返回"[objectString]"。所以我們可以編寫一系列的isType 函數(shù)。代碼如下:
var isString = function( obj ){ return Object.prototype.toString.call( obj ) === "[object String]"; }; var isArray = function( obj ){ return Object.prototype.toString.call( obj ) === "[object Array]"; }; var isNumber = function( obj ){ return Object.prototype.toString.call( obj ) === "[object Number]"; };
var isType = function( type ){ return function( obj ){ return Object.prototype.toString.call( obj ) === "[object "+ type +"]"; } }; var isString = isType( "String" ); var isArray = isType( "Array" ); var isNumber = isType( "Number" ); console.log( isArray( [ 1, 2, 3 ] ) ); // 輸出:true
我們還可以用循環(huán)語句,來批量注冊這些isType 函數(shù):
var Type = {}; for ( var i = 0, type; type = [ "String", "Array", "Number"][ i++ ]; ){ (function( type ){ Type[ "is" + type ] = function( obj ){ return Object.prototype.toString.call( obj )==="[object "+ type +"]"; } })( type ) }; Type.isArray( [] ); // 輸出:true Type.isString( "str" ); // 輸出:true
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78814.html
摘要:可用于判斷多種數(shù)據(jù)類型基本數(shù)據(jù)類型和內(nèi)置對象,然而對于一些自定義構(gòu)造函數(shù)生成的對象就不能進行判斷了。判斷是不是所有數(shù)據(jù)類型中,只有不等于它本身判斷數(shù)組的方法除了上文提到的三種方法可判斷外,還有一個構(gòu)造函數(shù)自帶的方法可判斷。 數(shù)據(jù)類型的分類 要想判斷數(shù)據(jù)類型,首先要知道數(shù)據(jù)類型的分類。數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。 基本數(shù)據(jù)類型 基本數(shù)據(jù)類型有 五 種,ES6中新加了第 六 種...
摘要:對象類型常見的有,,,正則新增自己提供的樂行判斷如果不對對象做嚴格區(qū)分使用。的實現(xiàn)使用了原型繼承的表示左表達式,表示右表達式,它是用是否等于來判斷對象的類型的。常見框架和庫的實數(shù)據(jù)類型判斷測試這里將的實現(xiàn)原理抽取出來,用原生實現(xiàn)。 JavaScript一共有六種數(shù)據(jù)類型,分為原始類型(又名基本類型)和對象類型(又名引用類型) 原始類型有五種,分別為number,string,boole...
摘要:最常見的判斷方法它的官方解釋操作符返回一個字符串,表示未經(jīng)計算的操作數(shù)的類型。另外,是判斷對象是否屬于某一類型,而不是獲取的對象的類型。多個窗口意味著多個全局環(huán)境,不同的全局環(huán)境擁有不同的全局對象,從而擁有不同的內(nèi)置類型構(gòu)造函數(shù)。 js中的數(shù)據(jù)類型 js中只有六種原始數(shù)據(jù)類型和一個Object: Boolean Null Undefined Number String Symbol ...
showImg(https://segmentfault.com/img/remote/1460000018796041?w=900&h=500); 簡介 字符串、數(shù)字、布爾值、Null、Undefined、對象、數(shù)組、函數(shù)、判斷方法 JavaScript 中有兩種數(shù)據(jù)類型,分別是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型: 基本數(shù)據(jù)類型 引用數(shù)據(jù)類型 Number、String、Boolean、Null...
摘要:本文將講解我目前所知道的判斷數(shù)據(jù)類型的方法。數(shù)據(jù)類型一共有種除了之外的種屬于原始數(shù)據(jù)類型。等價于問題四的返回值是什么答案。 本文將講解我目前所知道的判斷JavaScript數(shù)據(jù)類型的方法。JavaScript數(shù)據(jù)類型一共有7種: Undefined Null Boolean String Symbol Number Object 除了Object之外的6種屬于原始數(shù)據(jù)類型。有時,我...
摘要:如果項目中需要頻繁的進行數(shù)據(jù)類型的判斷與獲取可以考慮進行封裝,簡單的處理與已足夠。 前言 在js中數(shù)據(jù)我們經(jīng)常需要判斷或者獲取數(shù)據(jù)類型,大部分時候我們都是通過type加instanceof來組合判斷數(shù)據(jù)類型來實現(xiàn),大部分代碼中對于數(shù)據(jù)類型的獲取處理都比較丑陋,前段時間看了一下Q的源代碼中對數(shù)據(jù)類型的判斷與獲取處理,看起來相當簡潔也比較好用,這篇文章來進行一下發(fā)散。 typeof 在js...
閱讀 3685·2021-11-25 09:43
閱讀 2645·2021-11-25 09:43
閱讀 3844·2021-11-24 09:38
閱讀 697·2021-11-18 10:02
閱讀 2237·2021-09-22 15:53
閱讀 2998·2019-08-30 15:44
閱讀 2774·2019-08-30 14:01
閱讀 2754·2019-08-29 15:15