日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > Object.prototype.toString.call() 區分對象類型

Object.prototype.toString.call() 區分對象類型

來源:程序員人生   發布時間:2014-02-05 07:27:44 閱讀次數:2872次

在 JavaScript 里使用 typeof 來判斷數據類型,只能區分基本類型,即 “number”,”string”,”undefined”,”boolean”,”object” 五種。對于數組、函數、對象來說,其關系錯綜復雜,使用 typeof 都會統一返回 “object” 字符串。

要想區別對象、數組、函數單純使用 typeof 是不行的。或者你會想到 instanceof 方法,例如下面這樣:

var a = {};var b = [];var c = function () {};//a b c 都是 Object 的實例console.log(a instanceof Object) //trueconsole.log(b instanceof Object) //trueconsole.log(c instanceof Object) //true//只有 Array 類型的 b 才是 Array 的實例console.log(a instanceof Array) //falseconsole.log(b instanceof Array) //trueconsole.log(c instanceof Array) //false//只有 Function 類型的 c 才是 Function 的實例console.log(a instanceof Function) //falseconsole.log(b instanceof Function) //falseconsole.log(c instanceof Function) //true

從以上代碼來看,要判斷復合數據類型,可以如下判斷:

//對象(a instanceof Object) && !(a instanceof Function) && !(a instanceof Function)//數組(a instanceof Object) && (a instanceof Array)//函數(a instanceof Object) && (a instanceof Function)

更簡便的方式,即是使用 Object.prototype.toString.call() 來確定類型,ECMA 5.1 中關于該方法的描述[1]是這樣的:

When the toString method is called, the following steps are taken:
If the this value is undefined, return “[object Undefined]“.
If the this value is null, return “[object Null]“.
Let O be the result of calling ToObject passing the this value as the argument.
Let class be the value of the [[Class]] internal property of O.
Return the String value that is the result of concatenating the three Strings “[object ", class, and "]“.

由于 JavaScript 中一切都是對象,任何都不例外,對所有值類型應用 Object.prototype.toString.call() 方法結果如下:

console.log(Object.prototype.toString.call(123)) //[object Number]console.log(Object.prototype.toString.call('123')) //[object String]console.log(Object.prototype.toString.call(undefined)) //[object Undefined]console.log(Object.prototype.toString.call(true)) //[object Boolean]console.log(Object.prototype.toString.call({})) //[object Object]console.log(Object.prototype.toString.call([])) //[object Array]console.log(Object.prototype.toString.call(function(){})) //[object Function]

所有類型都會得到不同的字符串,幾乎完美。

[1] Object.prototype.toString ()

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品一区二区三区久久 | 久久久女女女女999久久 | 黄色小视频免费 | av久色| 国产精品成人一区二区三区 | 久久99精品一区二区三区三区 | 狠狠色综合网 | 91一区 | 国产精品久久久久久久9999 | 午夜激情久久久 | 亚洲在线视频观看 | 欧美成人精品二区三区99精品 | 91成人网| 日韩欧美中文在线 | 欧美精品一区二区三区蜜桃视频 | 国产成人网 | 精品一区二区国产 | 久久免费少妇 | 国产成人在线视频 | 亚洲图片一区二区 | 国产精品久久久久久久久免费相片 | 日韩黄网 | 91视频精品 | jizz高清| 久久www免费人成看片高清 | 欧美黄色网 | 成人免费视频网站在线观看 | 国产精品第 | 欧美日本道 | 成人一区二区三区四区 | 国内成人在线 | 日韩天堂在线 | 最近中文字幕在线观看 | 国产中文字幕一区 | 亚洲精品在线免费 | 麻豆视频一区二区 | 国产欧美一区二区精品久导航 | 成人国产免费视频 | 国产成人午夜精品5599 | 爱爱视频在线观看 | 久久久91精品 |