js型別檢測

2021-10-12 12:22:39 字數 4115 閱讀 4838

只適用與基本型別

1 console.

log(

typeof

"langshen");

// string

2 console.

log(

typeof

666)

;// number

3 console.

log(

typeof

true);

// boolean

4 console.

log(

typeof

false);

// boolean

5 console.

log(

typeof

function()

);// function

6 console.

log(

typeof undefined)

;// undefined

7 console.

log(

typeof

null);

// object

8 console.

log(

typeof

);// object

9 console.

log(

typeof);

// object

10. console.

log(type nan

)//number

使用場景

可以用來檢測函式是否傳值

1

function

fn(a, b)

5 console.

log(a, b)

;//1 06}

7fn(1

);

instanceof 可以正確的判斷物件的型別

因為內部機制是通過判斷物件的原型鏈中是不是能找到型別的 prototype。

instanceof是乙個操作符,返回值是乙個布林值

instanceof是檢測引用資料型別,而不能檢測基本資料型別

console.

log(

"langshen"

instanceof

string);

//false

console.

log(

666instanceof

number);

//false

console.

log(

true

instanceof

boolean);

//false

console.

log(

instanceof

array);

//true

console.

log(

instanceof

object);

//true

console.

log(

function()

instanceof

function);

//true

console.

log(

instanceof

object);

//true

只由new出來的才返回true

1

newstring

("langshen"

)instanceof

string

//true

2new

number

(666

)instanceof

number

//true

3new

boolean

(true

)instanceof

boolean

//true

constructor這個屬性存在於建構函式的原型上,指向建構函式,

物件可以通過proto在其所屬類的原型上找到這個屬性

console.

log(

("1"

).constructor === string)

;//true

console.

log((1

).constructor === number)

;//true

console.

log(

(true

).constructor === boolean)

;//true

console.

log(([

]).constructor === array)

;//true

console.

log(

(function()

).constructor === function)

;//true

console.

log(()

.constructor === object)

;//true

這裡有乙個坑,如果我建立乙個物件,

更改它的原型,constructor就會變得不可靠了

看著好像很完美,但是

所有物件都會從它的原型上繼承乙個 constructor 屬性

functionfn(

);fn.prototype=

newarray()

;var f=

newfn()

;console.

log(f instanceoffn)

true

console.

log(f instanceof

object

)true

console.

log(f instanceof

array

)true

console.

log(f.constructor===fn)

;//false

console.

log(f.constructor===array)

;// true

console.

log(object.prototype.tostring.

call(1

));//[object number]

console.

log(object.prototype.tostring.

call(''

));//[object string]

console.

log(object.prototype.tostring.

call

(true))

;//[object boolean]

console.

log(object.prototype.tostring.

call

(null))

;// [object null]

console.

log(object.prototype.tostring.

call

(undefined));

//[object undefined]

console.

log(object.prototype.tostring.

call([

]));

// [object array]

console.

log(object.prototype.tostring.

call()

);// [object object]

console.

log(object.prototype.tostring.

call

(/^$/))

;//[object regexp]

console.

log(object.prototype.tostring.

call((

function()

)));

//[object function]

js 型別檢測

1 檢測字串 數值 布林值 undefined function 使用typeof 在safari和chrome中檢測正則也會返回 function 2 檢測null 應用 3 檢測其它物件 方法一 利用instanceof constructor 再某些ie版本中存在跨iframe問題,每個ifr...

JS型別檢測

主要有兩種型別檢測 typeof 以及 instanceof 一 typeof 判斷型別 返回乙個字串 typeof 數字 number typeof 布林值 boolean typeof 字串 object typeof undefined undefined typeof null object...

JS 型別檢測

型別檢測分為五種 1.typeof 2.物件 obj instanceof object 函式物件 函式構造器 左邊的運算元的物件的原型鏈上是否有右操作函式構造器的prototype屬性 例子 1,2 instanceof array true new object instanceof array...