摘要:判斷數據類型的幾種方法一直接返回數據類型字段,但是無法判斷數組對象其中都返回二判斷某個實例是不是屬于原型構造函數三使用判斷方法可以改變的指向,那么把方法指向不同的數據類型上面,返回不同的結果最后我們可以定義一個完美的判斷數據類型的方法
javascript 判斷數據類型的幾種方法
一、typeof 直接返回數據類型字段,但是無法判斷數組、null、對象
typeof 1 "number" typeof NaN "number" typeof "1" "string" typeof true "boolean" typeof undefined "undefined" typeof null "object" typeof [] "object" typeof {} "object"
其中 null, [], {}都返回 "object"
二、instanceof 判斷某個實例是不是屬于原型
// 構造函數 function Fruit(name, color) { this.name = name; this.color = color; } var apple = new Fruit("apple", "red"); // (apple != null) apple instanceof Object // true apple instanceof Array // false
三、使用 Object.prototype.toString.call()判斷
call()方法可以改變this的指向,那么把Object.prototype.toString()方法指向不同的數據類型上面,返回不同的結果
Object.prototype.toString.call(1) "[object Number]" Object.prototype.toString.call(NaN); "[object Number]" Object.prototype.toString.call("1"); "[object String]" Object.prototype.toString.call(true) "[object Boolean]" Object.prototype.toString.call(null) "[object Null]" Object.prototype.toString.call(undefined) "[object Undefined]" Object.prototype.toString.call(function a() {}); "[object Function]" Object.prototype.toString.call([]); "[object Array]" Object.prototype.toString.call({}); "[object Object]"
最后我們可以定義一個完美的判斷數據類型的方法 _typeof()
function _typeof(obj){ var s = Object.prototype.toString.call(obj); return s.match(/[object (.*?)]/)[1].toLowerCase(); }; _typeof([12,3,343]); "array" _typeof({name: "zxc", age: 18}); "object" _typeof(1); "number" _typeof("1"); "string" _typeof(null); "null" _typeof(undefined); "undefined" _typeof(NaN); "number" _typeof(Date); "function" _typeof(new Date()); "date" _typeof(new RegExp()); "regexp"
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101677.html
摘要:類型檢測的方法鴨子類型返回一個字符串,適合函數對象和基本類型的判斷返回一個布爾值,判斷對象類型基于原型鏈的方式原理左邊對象的原型鏈原型上是否有右邊構造函數的對象屬性是基本類型這么多就說明不適合用于基本數據類型注意返回的是 類型檢測的方法 typeof instanceof Object.protype.toString constructor duck type:鴨子類型 show...
摘要:如果網頁中包含多個框架,那實際上就存在兩個以上不同的全局執行環境,從而存在兩個以上不同版本的構造函數。如果你從一個框架向另一個框架傳入一個數組,那么傳入的數組與在第二個框架中原生創建的數組分別具有各自不同的構造函數。 1. 首先,typeof肯定是不行的 對于一些基本類型,typeof是可以判斷出數據類型,但是判斷一些引用類型時候,不能具體到具體哪一種類型 再來復習一下typeof的...
摘要:三種使用構造函數創建對象的方法和的作用都是在某個特殊對象的作用域中調用函數。這種方式還支持向構造函數傳遞參數。叫法上把函數叫做構造函數,其他無區別適用情境可以在特殊的情況下用來為對象創建構造函數。 一、工廠模式 工廠模式:使用字面量和object構造函數會有很多重復代碼,在此基礎上改進showImg(https://segmentfault.com/img/bVbmKxb?w=456&...
摘要:實現方法方法二在服務端根據請求信息判斷瀏覽器是否支持谷歌瀏覽器上請求圖片是這樣的瀏覽器請求圖片是這樣的在圖片請求發出的時候,里有,服務端可以根據里面是否有進行判斷。 我們都知道,WebP 是 Google 推出的 WebP 圖片格式,它是一種支持有損壓縮和無損壓縮的圖片文件格式,根據Google測試,相同的圖片,WebP 格式的圖片均能比 PNG,JPG 格式的圖片節約不少體積,但是其...
摘要:參與任何數值計算的結構都是,而且。。面向人類的理性事物,而不是機器信號。達到無刷新效果。的工作原理總是指向一個對象,具體是運行時基于函數的執行環境動態綁定的,而非函數被聲明時的環境。原型對象上有一個屬性,該屬性指向的就是構造函數。 1.JS面向對象的理解 面向對象的三大特點:繼承、封裝、多態 1、JS中通過prototype實現原型繼承 2、JS對象可以通過對象冒充,實現多重繼承, 3...
閱讀 3452·2023-04-25 19:39
閱讀 3800·2021-11-18 13:12
閱讀 3634·2021-09-22 15:45
閱讀 2433·2021-09-22 15:32
閱讀 716·2021-09-04 16:40
閱讀 3728·2019-08-30 14:11
閱讀 1884·2019-08-30 13:46
閱讀 1564·2019-08-29 15:43