1. 程式人生 > >JS中精確判斷物件的型別

JS中精確判斷物件的型別

var a = [1,2,3,4,5];
var b = function(){}
var c = {'age':18,'sex':'男'}
console.log(typeof a,typeof b, typeof c)
console.log(Object.prototype.toString.apply(a),Object.prototype.toString.call(b),Object.prototype.toString.apply(c))

在toString方法被呼叫時,會執行下面的操作步驟:
 
1. 獲取this物件的[[Class]]屬性的值。
 
2. 計算出三個字串"[object ", 第一步的操作結果Result(1), 以及 "]"連線後的新字串。
 
3. 返回第二步的操作結果Result(2)。

[[Class]]是一個內部屬性,所有的物件(原生物件和宿主物件)都擁有該屬性.在規範中,[[Class]]是這麼定義的:
內部屬性描述
[[Class]]一個字串值,表明了該物件的型別。

其過程簡單說來就是:1、獲取物件的類名(物件型別)。2、然後將[object、獲取的類名、]組合並返回。

因此在JS中準確判斷資料型別用:Object.prototype.toString.call(obj) 即可


相關推薦

js精確判斷物件型別--關於typeof 和Object.prototype.toString方法的區別

在javascript中可以使用typeof來判斷資料型別,但typeof只能判斷區分基本型別,即number、string、boolean、undefinded和object這5種; <script type="text/javas

JS精確判斷物件型別

var a = [1,2,3,4,5]; var b = function(){} var c = {'age':18,'sex':'男'} console.log(typeof a,typeof b, typeof c) console.log(Object.prototy

JavaScript精確判斷物件型別——Object.prototype.toString

    面試中經常會問到js的資料型別有哪些,以及如何判斷資料型別的問題,對於基本資料型別undefined,string,boolean,number,symbol使用最常用的typeof即可判斷,但是對於null,array,{}使用typeof就會統一返回object字

Js如何判斷一個物件為陣列型別

在說明如何判斷一個物件為陣列型別前,我們先鞏固下js的資料型別,js一共有六大資料型別:number、string、object、Boolean、null、undefined。 string: 由單引號或雙引號來說明,如"string"; number:陣列型別,比如整數、小數等; Boolea

python判斷物件型別的函式——isinstance

isinstance是Python中的一個內建函式。是用來判斷一個物件的變數型別。 isinstance(object, class-or-type-or-tuple) 如果引數object是classinfo的例項,或者object是classinfo類的子類的一個例項, 返回True。如果object

js值的基本型別與引用型別,以及物件引用,物件的淺拷貝與深拷貝

js有兩種型別的值:棧:原始資料型別(undefinen,null,boolead,number,string)堆:引用資料型別(物件,函式和陣列)兩種型別的區別是:儲存位置不同,原始資料型別直接儲存在棧(stack)中的簡單資料段,佔據空間小,大小固定,屬於被頻繁使用的資料,所以放入棧中儲存;引用資料型別儲

JS怎樣判斷一個元素是不是物件

JS中,判斷物件型別時存在一個bug,那就是null型別也是object,那麼如何精準判斷一個元素是物件呢。 方法一:typeof function isObj(val) { return val !== null && typeof(val) === 'o

JS如何判斷一個物件是否為空物件

1. 通過 for...in... 遍歷屬性 ,如果是空物件返回false, 否則返回 true 。例: var judgeObj = function(obj){           for(var

js判斷物件型別

對於判斷引數型別 typeof 這個估計是最常用的了 , 比如下面的兩個簡單的例子 typeof {} // 'object' typeof /\d/ // 'object' typeof null // 'object' typeof undefi

jQuery遍歷js的array物件判斷array是否包含某值

JS中的array遍歷起來不太爽,其實jQuery提供了比較好的遍歷方法: $.each(typesList, function(index, value) { $("#all").append( '<div class="workflow_t

Day046--JavaScript-- DOM操作, js的面向物件, 定時

一. DOM的操作(建立,追加,刪除) parentNode 獲取父級標籤 nextElementSibling 獲取下一個兄弟節點 children 獲取所有的子標籤 <!DOCTYPEhtml><htmllang="en"><

JavaScript 精確 判斷 資料型別

一、使用 typeof  typeof 返回對數的型別   typeof 123 == 'number' typeof '123' == 'string' typeof [1,2,3] == 'object' typeof {a:1} == 'obje

CocosCreator開發筆記(20)-在JS如何判斷undefined和null

不當用法 有時為了判斷某個值有效,JS新手會寫這種臃腫程式碼: if (data != null && typeof(data) != undefined && data != '') { ... } 為避免這種情況,首先要了解und

JavaScript基礎(3)-JS的面向物件、定時器、BOM、位置資訊

一、建立物件的幾種常用方式、 1、使用Object或物件字面量建立物件;        a、使用Object()內建的建構函式來建立物件,例如: var student = new Object(); // 建立一個studen

js常見的錯誤型別

SyntaxError  語法錯誤 ReferenceError  引用錯誤 要用的變數沒有找到 RangeError    範圍錯誤      引數超範圍 TypeError  

JS的history物件

window.history指向History物件,它表示當前視窗的瀏覽歷史。 History物件儲存了當前視窗訪問過的所有頁面網址。 1 history.back()//後退到前一個網址 等同於 history.go(-1) 方法: 1 history.back() 2

JS的瀏覽器物件

*瀏覽器物件又稱BOM,是各個瀏覽器廠商根據DOM在在各自瀏覽器上的實現,不同瀏覽器有差異,實現方式不同。 常見的BOM主要包括:* window。 window物件可以作為js在瀏覽器上的全域性作用域,也可以表示瀏覽器的視窗。 navigator navigator物件表示瀏覽

JS陣列與物件的遍歷方法例項

一、陣列的遍歷: 首先定義一個數組 arr=['snow','bran','king','nightking']; 1、for迴圈,需要知道陣列的長度; 2、foreach,沒有返回值,可以不知道陣列長度; arr.forEach(function(ele,index

js關於Blob物件的介紹與使用 js關於Blob物件的介紹與使用

js中關於Blob物件的介紹與使用   blob物件介紹 一個 Blob物件表示一個不可變的, 原始資料的類似檔案物件。Blob表示的資料不一定是一個JavaScript原生格式 blob物件本質上是js中的一個物件,裡面可以儲存大量的二進位制編碼格式的資料。

javascript怎麼判斷物件{}為空

時候通過AJAX方法呼叫返回的是一個JSON物件,而這個物件可能在開發過程中會沒有資料是一個空{}。 JavaScript判斷object/json 是否為空,可以使用jQuery的isEmptyObject()方法。 function isEmptyObject(obj) {