1. 程式人生 > >javascript中的型別檢測

javascript中的型別檢測

最常見的是使用 typeof 來判斷資料型別

可以區分4種基本型別,即 “number”,”string”,”undefined”,”boolean”,第5種基本型別null型別返回值為object(歷史相容性問題導致)

判斷物件型別時返回為object

1 console.log(typeof 'hello') //string
2 console.log(typeof('hello')) //string            
3 console.log(typeof 123) //number
4 console.log(typeof undefined) //undefined
5 console.log(typeof
null) //object 6 console.log(typeof [1,2]) //object 7 console.log(typeof new Object()) //object 8 console.log(typeof NaN) //number

typeof在判斷一些基本型別或函式物件時很方便,但不能判斷其他型別的物件,此時使用instanceof(在不同iframe和window間檢測時失效)

 1 console.log([1,2] instanceof Array) //true
 2 console.log(new Object() instanceof Array) //false
 3
function Person(){ //父類 4 } 5 function Student(){ //子類 6 } 7 //任何一個建構函式都會有一個prototype物件屬性 8 //這個物件屬性將用作使用new建構函式去構造出物件的原型 9 Student.prototype = new Person(); 10 Student.prototype.constructor = Student; 11 var s = new Student(); 12 var p = new Person(); 13 console.log(s instanceof Student) //
true 14 console.log(p instanceof Person) //true 15 console.log(p instanceof Student) //false 16 //物件s有一個原型,指向它的構造器Student.prototype屬性 17 //物件s的原型不等於Person.prototype屬性,於是原型鏈向上查詢 18 //物件s的原型的原型Student.prototype.prototype等於Person.prototype,因此返回true 19 console.log(s instanceof Person) //true

想區別物件、陣列、函式使用 typeof 是不行的,js中,通過Object.prototype.toString.apply()方法,判斷某個物件值屬於哪種內建型別

1 console.log(Object.prototype.toString.apply([])); //"object Array"
2 console.log(Object.prototype.toString.apply(function(){}));  //"object Function"
3 console.log(Object.prototype.toString.apply(null));  //"object Null" IE6/7/8下返回"object Object"
4 console.log(Object.prototype.toString.apply(undefined)); //"object Undefined" 

相關推薦

JavaScript如何檢測一個變數是一個String型別?請寫出函式實現

  1.function a(obj){ return typeof(obj)=="string"; } alert(a(123)); alert(a("abc")); 2.function b(obj){   return obj.construct

javascript如何檢測客戶端的瀏覽器和操作系統類型

asc eight lsp java user width use scrip 類型 答案:var resolution = "分辨率:" + window.screen.width + "*" + window.screen.height;, var ua

JavaScript資料型別檢測總結

在js中,有四種用於檢測資料型別的方式,分別是: typeof  用來檢測資料型別的運算子 instanceof    檢測一個例項是否屬於某個類 constructor   建構函式 Object.prototype.toString.call()  原型鏈上的Object物件的toString方法 下

javascript型別檢測

最常見的是使用 typeof 來判斷資料型別 可以區分4種基本型別,即 “number”,”string”,”undefined”,”boolean”,第5種基本型別null型別返回值為object(歷史相容性問題導致) 判斷物件型別時返回為object 1 console.log(typeof 'hell

認識Javascript的navigator物件以及檢測瀏覽器型別和版本,獲取瀏覽器版本號,檢測客戶端作業系統

Navigator物件包含了Web瀏覽器的基本資訊(如名稱,版本,作業系統等) 通過window.navigator方式可以引用該物件,並利用它的屬性讀取客戶端基本資訊 Navigator的5個主要屬性: appName:Web瀏覽器的名稱 appVersion:瀏覽器的

JavaScript四種不同的屬性檢測方式比較

bject 如果 cnblogs thead != () 繼承 rip left JavaScript中四種不同的屬性檢測方式比較 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //false "toStrin

Javascript資料型別&深淺拷貝二

資料型別: Javascript中有5種基本資料型別(簡單資料型別),分別為:Undefined, Null, Boolean, Number和String; 同時還含有一種複雜資料型別,即物件(雖然js中一切皆為物件) 其中Undefined和Null的區別為: U

JavaScriptArray型別的一些常用方法

與其他語言中的陣列有著極大的區別,JavaScript中的陣列,每一項都可以儲存任何型別的資料,且陣列的大小可以動態的調整,即可以隨著資料的新增自動增長以容納新增的資料。 1.陣列的建立方式 建立陣列的基本方式有兩種 (1)使用Array建構函式 var colors = new Ar

JavaScript引用型別Math物件相關介紹

Math物件在實際應用中作用感覺得到,當然引用型別的這些方法不可能去一一列舉出來我們只有邊用邊記憶才比較好,那麼小編這邊相當於是給自己做上一個筆記,介紹一些Math中自己覺得用得上的方法。 ·我們這樣去理解math方法,實際用法上他不像Array類那樣要去先建立一個物件在對物件應用相關方法,更多

JavaScript的隱式型別轉換

最近在學習渡一教育的JavaScript精品課,成哥講的還是很棒的,開這個系列記錄下學習筆記 本次學習筆記,對應web前端開發JavaScript精英課js的第六課時   目錄  一.is NaN()  二.++ -- 自增自減運算子 &nb

javascript的Function型別

Function(函式)型別實際上是物件。每個函式都是Function型別的例項,而且都與其他引用型別一樣具有屬性和方法。由於函式是物件,因此函式名實際上也是一個指向函式物件的指標。 一.函式的宣告方式 1.普通的函式宣告 function laber(num1, num2) { retu

靜態型別JavaScript 是一種負擔嗎?

原文作者:UC 國際研發 Randy 寫在最前:歡迎你來到“UC國際技術”公眾號,我們將為大家提供與客戶端、服務端、演算法、測試、資料、前端等相關的高質量技術文章,不限於原創與翻譯。 最近我在公司的專案中遇到很多由於型別不匹配所導致的不可預估的問題。比如說,我們的程式產生了一個純數字的 unique

JavaScript 有哪些不同的資料型別?

JavaScript 中只有兩種型別——主要資料型別和引用型別(物件),其中有六種主要資料型別。 ECMAScript中有5種簡單資料型別(也成為基本資料型別): Undefined,Null,Boolean,Number,String 還有一種複雜資料型別: Object type

JavaScript的變數型別

問題: (1)JS中使用 typeof 能得到哪些變數型別? (2)何時使用 === ?何時使用 ==? (3)JS中有哪些內建函式? (4)JS變數按照儲存方式區分為那些型別,並描述其特點 (5)如何理解JSON   分析: 變數型別: 值型別 / 引用型

JavaScript型別檢測方法

1、typeof 運算子識別,適用以下型別 var num = 1; // typeof(num) == 'number' var str = 'hello'; // typeof(str) == '

JavaScript資料型別轉換

在js中,資料型別轉換分為顯式資料型別轉換和隱式資料型別轉換。 1, 顯式資料型別轉換 a:轉數字: 1)Number轉換: 程式碼: var a = “123”; a = Number(a);   注意: a) 如果轉

JavaScript基本資料型別和引用資料型別的區別

1、基本資料型別和引用資料型別   ECMAScript包括兩個不同型別的值:基本資料型別和引用資料型別。   基本資料型別指的是簡單的資料段,引用資料型別指的是有多個值構成的物件。   當我們把變數賦值給一個變數時,解析器首先要確認的就是這個值是基本型別值還是引用型別

【react】利用prop-types第三方庫對元件的props的變數進行型別檢測

1.安裝:npm install prop-types --save 2.使用 import React, { Component } from 'react'; import PropTypes

JavaScript的方法(Function型別

Function 函式是 ES 中非常重要的一部分,函式實際上也是物件。 每個函式都是 Function 型別的例項,而且都與其他引用型別一樣具有屬性和方法。 由於函式是物件,因此函式名實際上也是一個指向函式物件的指標,不會跟某個函式繫結。 定義函式 函式定義有三種方式:

JavaScript的RegExp型別

RegExp ECMAScript 通過 RegExp 型別來支援正則表示式。 建立 RegExp 建立正則表示式語法: var expression = / pattern / flags ; 其中的模式(pattern)部分可以是任何簡單或複雜的正則表示式,可