摘要:類型檢測的方法鴨子類型返回一個字符串,適合函數對象和基本類型的判斷返回一個布爾值,判斷對象類型基于原型鏈的方式原理左邊對象的原型鏈原型上是否有右邊構造函數的對象屬性是基本類型這么多就說明不適合用于基本數據類型注意返回的是
類型檢測的方法
typeof
instanceof
Object.protype.toString
constructor
duck type:鴨子類型
typeof返回一個字符串,適合函數對象和基本類型的判斷
var a = 123; var b = "123"; var c = false; var d = null; var e = undefined; var f = {}; var g = function(){}; var h = []; var i = NaN; console.log(typeof a); console.log(typeof b); console.log(typeof c); console.log(typeof d); console.log(typeof e); console.log(typeof f); console.log(typeof g); console.log(typeof h); console.log(typeof i);instanceof
返回一個布爾值,判斷對象類型(基于原型鏈的方式)
原理:
左邊對象的原型鏈(_proto_原型)上是否有右邊構造函數的prototype對象屬性
var a = 123; var b = "123"; var c = false; var d = null; var e = undefined; var f = {}; var g = function(){}; var h = []; var i = NaN; console.log(a instanceof Number); console.log(b instanceof String); console.log(c instanceof Boolean); console.log(d instanceof Object); console.log(e instanceof Object); console.log(f instanceof Object); console.log(g instanceof Function); console.log(h instanceof Array); console.log(i instanceof Number);//NaN是基本類型
這么多false就說明instanceof不適合用于基本數據類型!!
var oP = Object.prototype, toString = oP.toString; console.log(toString.call(123));//[object Number] console.log(toString.call("123"));//[object String] console.log(toString.call(false));//[object Boolean] console.log(toString.call(undefined));//[object Undefined] console.log(toString.call(null));//[object Null] console.log(toString.call({a: "123"}));//[object Object] console.log(toString.call(/123/));//[object RegExp] console.log(toString.call([123]));//[object Array] console.log(toString,call(Date));//[object Function]
注意:IE6/7/8 Object.prototype.toString.call(null/undefined)返回的是[object Object]
constructorvar a = 123; var b = "123"; var c = false; var d = null; var e = undefined; var f = {}; var g = function(){}; var h = []; var i = NaN; console.log(a.constructor == Number); console.log(b.constructor == String); console.log(c.constructor == Boolean); // console.log(d.constructor == Object); // console.log(e.constructor == Object); console.log(f.constructor == Object); console.log(g.constructor == Function); console.log(h.constructor == Array); console.log(i.constructor == Number);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82198.html
摘要:三種使用構造函數創建對象的方法和的作用都是在某個特殊對象的作用域中調用函數。這種方式還支持向構造函數傳遞參數。叫法上把函數叫做構造函數,其他無區別適用情境可以在特殊的情況下用來為對象創建構造函數。 一、工廠模式 工廠模式:使用字面量和object構造函數會有很多重復代碼,在此基礎上改進showImg(https://segmentfault.com/img/bVbmKxb?w=456&...
摘要:開始之前,必須要知道中關于類型的定義。作為基本類型也返回,因為在中的定義就是用來表示一個空對象指針。返回值類型總結一般用來檢測,無法正確檢測基本數據類型。但是注意,因為和都是類型。返回值類型總結這也是比較好的返回方式了。 開始之前,必須要知道js中關于類型的定義。js中有6種基本類型,null,undefined,boolean,string,number,symbol(es6新增的類...
摘要:參與任何數值計算的結構都是,而且。。面向人類的理性事物,而不是機器信號。達到無刷新效果。的工作原理總是指向一個對象,具體是運行時基于函數的執行環境動態綁定的,而非函數被聲明時的環境。原型對象上有一個屬性,該屬性指向的就是構造函數。 1.JS面向對象的理解 面向對象的三大特點:繼承、封裝、多態 1、JS中通過prototype實現原型繼承 2、JS對象可以通過對象冒充,實現多重繼承, 3...
摘要:日常工作中經常會有判斷數據類型的需求,這里簡單介紹下我平時判斷數據類型的幾種方式。當使用檢測基本類型時,會始終返回操作符確實解決了類型判斷的問題,但還是有一些不足之處。此外,只能返回,并不能直接返回數據的類型。 JavaScript中有5種基本數據類型:undefined,String,Boolean,Number,Null,以及一種復雜數據類型Object。日常工作中經常會有判斷數據...
摘要:在他的重學前端課程中提到到現在為止,前端工程師已經成為研發體系中的重要崗位之一。大部分前端工程師的知識,其實都是來自于實踐和工作中零散的學習。一基礎前端工程師吃飯的家伙,深度廣度一樣都不能差。 開篇 前端開發是一個非常特殊的行業,它的歷史實際上不是很長,但是知識之繁雜,技術迭代速度之快是其他技術所不能比擬的。 winter在他的《重學前端》課程中提到: 到現在為止,前端工程師已經成為研...
閱讀 648·2021-11-25 09:43
閱讀 1666·2021-11-18 10:02
閱讀 1036·2021-10-15 09:39
閱讀 1884·2021-10-12 10:18
閱讀 2120·2021-09-22 15:43
閱讀 768·2021-09-22 15:10
閱讀 2086·2019-08-30 15:53
閱讀 985·2019-08-30 13:00