美文网首页
js类型进阶

js类型进阶

作者: angelwgh | 来源:发表于2016-11-24 18:50 被阅读0次

    类型

    • 原始(值)类型
      • Undefined
      • Null
      • Boolean
      • String
      • Number
      • Object
    • 对象(引用)类型
      • Object
        • Array
        • Date
        • ...

    对象类型

    1. 浏览器扩展对象
      ActiveObject、Debug、VBArry、XML、Script ...

    由于各个浏览器之前这些对象并不通用,因此早起我们的开发者为了开发一个功能,需要针对不同的浏览器设计不同的页面,随着ECMA和w3c一系列规范的发展,这些浏览器扩展对象正在慢慢消失或者弃用。稍作了解

    1. 宿主对象
      window、document、navigator...

    提供了DOM和BOM操作的API,需要深入了解

    1. 原声对象
    • 构造函数(通过构造函数创建的对象)
      • Boolean
      • String
      • Number
      • Object
      • Function
      • Array
      • Date
      • RegExp
      • Error
    • 对象
      • Math
      • JSON
      • 全局对象
      • arguments

    类型转换

    • 隐式类型转换
      • 数字和字符串作'+'操作时,数字隐式地转化成字符串
        • 2+'1' //'21'
      • 其他运算符字符串会隐式地转化成字数字
        • 2-'1' //1
      • 数字、字符串进行'.'操作时会转成对象类型
        • (3.1415).toFixed(2) // 3.14
      • 隐式类型转化出现的场景
        • 数字运算符
        • . 操作符
        • if语句
        • == 双等号
      • 隐式类型转化结果
        • undefined转化成Number时结果为NaN
        • null转化成Number时结果为0
        • ""转化成Boolean时结果为false
        • 带有非数字字符的字符串转成Number是结果都为NaN
        • NaN转成Boolean时结果为false
        • 所有对象转成boolean结果都是true
        • 所有对象转成Number结果都是NaN
    • 显式类型转换
      • NuMber(x) 把x转成数字
      • String(x) 把X转成字符串
      • Boolean(x) 把x转成布尔值
      • paseInt()、paseFloat()
      • !、!! 转成布尔值

    类型识别

    • typeof
      • 是一个操作符,typeof "a" typeof("a")
      • 可以识别标准类型(Null除外)
      • 不能识别具体的对象类型,但可以识别Function
    • instanceof
      • 能识别所有对象留下
      • 不能判别原始类型
        • [] instanceof Array //true
        • /s/ instanceof RegExp //true
    • Object.prototype.toString.call
      • 可识别标准类型以及内置对象类型
      • 不能识别自定义对象类型
    function type(obj){
       return Object.prototype.toString.call(obj).slice(8,-1)
    }
    
    
    • constructor
      • 识别标准类型(undefind和nunll除外)
      • 识别内置对象类型
      • 识别自定义对象类型
    • 识别所有类型函数封装
    function getConstructorName(obj){
        return (obj===undefined||obj===null)?obj:(obj.constructor&&obj.constructor.toString().match(/function\s*([^(]*)/)[1]);
    }
    

    相关文章

      网友评论

          本文标题: js类型进阶

          本文链接:https://www.haomeiwen.com/subject/uotipttx.html