js 資料型別

2022-08-13 03:48:15 字數 1693 閱讀 4491

js的原始資料型別包含五種:number、string、boolean、null、undefined

還有乙個大家常見到的也就是object(date、function、array等)

如何判斷型別,主要有以下幾種:typeof、instanceof、object.prototype.tostring、constructor、duck type

1)typeof:適合判斷函式和基本型別的判斷,例如:

typeof 1-》『number』,

typeof true-》『boolean』,

typeof function-》『function』,

typeof undefined-》『undefined』,

typeof new object()-》『object』,

typeof [1,2]-》『object』,

typeof nan-》『number』,

typeof null-》『object』(歷史遺留問題)

發現沒有,對基本型別比較合適,遇到陣列,還是object,無法精確區分object,這時候引入instanceof(基於原型鏈prototype)

2)instanceof:obj instanceof object 適合判斷物件型別(基於原型鏈prototype)

舉個例子:

var child = function (){};

var parent = function (){};

child.prototype = new parent();

var c = new child();

var p = new parent();

document.write(c instanceof parent);//true

有關prototype,可以查詢相關的文件,以後我也會在部落格中總結一下前人總結的特點

簡單說一下這個例子,每乙個例項物件(c,p)都有乙個_proto_屬性(原型屬性),他們會指向自己物件(child,parent)的prototype

第一步,會判斷c的_proto_指向的child的prototype是否等於parent的prototype,不等於,

第二步,繼續找c的上一級的原型,前面定義了child.prototype = new parent();也就是說c的_proto_的_proto_跟parent的prototype是一樣的,這裡就返回true了

3)object.prototype.tostring:適合內建物件和基本元素,注意ie的相容(ie6,7,8 返回[object object])

例如:這裡簡單查一下jq的型別判斷的部分原始碼:

type: function( obj ) ,

isfunction

: function( obj ) ,

isarray: array.isarray || function( obj ) ,

jquery.each("boolean number string function array date regexp object".split(" "), function(i, name) );

這裡我想說的就是jq的設計技巧,很巧妙的把我們用到的型別,用陣列同統一封裝一下,js的很多原生的方法在jq也定義了一下。這裡借鑑一下這個思路

js資料型別

一.原始資料型別 1.typeof 運算子。var a alert typeof a 輸出結果為 undefined 2.undefined 未定義 型別 當變數未定義時,該變數值被預設為undefined 如 var a alert typeof a 輸出結果為 undefined 注意值unde...

js資料型別

js 基本資料型別 undefined null boolean number string js 操作符 typeof檢測給定變數的資料型別。返回值表示的型別 undefined 值未定義。boolean 值為布林型別。string 值為字串。number 值為數字。object 值為物件或nul...

js資料型別

var num 1,boo true,aa null,bb,str mary arr 1,2,4,8 obj arrnew new array 1,2,3 strnew new string 1,2,3 用 typeof 檢測變數的型別 console.log number typeof num n...