• javascript数组、对象和Null的typeof同为object,区分解决办法


    在JS里typeof 大家用的很多,可以使对于数组、对象和Null无法区分的问题,看了看犀牛书还是有解决办法的。

    document.writeln(typeof "abc"); //string
    document.writeln(typeof 123);   //number
    document.writeln(typeof true);  //boolean
    document.writeln(typeof eval);  //function
    document.writeln(typeof []);    //object
    document.writeln(typeof null);  //object
    document.writeln(typeof {});    //object

    基本数据类型基本都出来了,可是数组、对象和null没办法区分的。我们看看怎么破。

    其实在哪里听过这么一句话,JavaScript 中一切都是对象,现在我也有所体会,看看往下看。

    Object.prototype.toString.call() 
    //ECMA 5.1 中关于该方法的描述
    //[object Undefined] 这个是打印出来的结果

    这个该怎么用呢?直接上例子

    Object.prototype.toString.call([]) == "[object Array]"
    Object.prototype.toString.call({}) == "[object Object]"
    Object.prototype.toString.call(null) == "[object Null]"

    以上就清晰明了的区分了它们,JavaScript 中一切都是对象就完全体现在这里了,我们试试基础数据类型。

    Object.prototype.toString.call(123) == "[object Number]"
    Object.prototype.toString.call("arr") == "[object String]"
    Object.prototype.toString.call(true) == "[object Boolean]"

    看结果应该都是true,应该就是这么证明吧,问题解决了。其实还是有其他方法也能区分直接上代码,大家私下试试吧。

    (typeof arr == "object") && (arr.constructor == Array)
    (typeof arr == "object") && (arr instanceof Array)

    本文转载自:https://www.cnblogs.com/gada/p/3277659.html

    如果这篇文章对您有帮助,您可以打赏我

    技术交流QQ群:15129679

  • 相关阅读:
    swift 设置图片动画组 iOS11之前 默认图片 设置不成功
    iOS 管理库 Carthage 安装以及使用
    OC 和 swift 冒泡排序
    swift中UITextView的使用
    图片拉伸
    swift
    label文字从左上角开始
    2017最新总结CocoaPods安装细节及遇到的问题
    苹果 重置APPID密保问题及更新开发者协议
    xcode
  • 原文地址:https://www.cnblogs.com/yeminglong/p/14861876.html
Copyright © 2020-2023  润新知