zoukankan      html  css  js  c++  java
  • Javascript进阶(2)---对象类型

    Javascript原始对象类型(6种)

    • (数据类型)numberstringbooleanfunctionundefined
    • (对象类型)object(null、{}、Array、Date、RegExp...)

    关于NaN

    • NaN是一个特殊的number类型,它与任何数值都不相等,也包括他自己
    • typeof(NaN)的值为number
    • 唯一能够判断NaN的方法时通过 isNaN()函数

     关于null与undefined

    • null表示的是一个空值,它与 0 以及空字符串不同,“”表示长度为0的字符串,而null表示空。
    • JS的设计者想用undefined 表示未定义,单null 与 undefined 的区分意义并不大,后者仅在判断参数是否传递时候有用
    • 例如访问一个下标越界的数组元素,返回的就是 undefined

    隐式转换

    1 var x = "66H34TYY" + 42 ;
    2 var y = 42 + "hahaha";
    3 "37" + 37 

      以上三种 “+” 号都理解为字符串拼接,返回的都是一个string类型数据

    1  var result = "37" - 7 

      这里的 “-” 号却理解为 减法

    //设car为null
    1 car - 0        //car 减去 0 
    2 car + “”       //car加上空字符串

      可利用这两种办法,巧妙地把car(做减法)变为number或者(做加法)变为string


     显式转换

    var num=Number('123');             //将字符串‘123’转换为number
    console.log(num+""+typeof(num)+"类型");  //123是number类型
    
    
    var boo=Boolean('false');             //将字符串‘false’转换为boolean
    console.log(boo+""+typeof(boo)+"类型");   //true是boolean类型
                              //注意此处只要Boolean()转换的内容不为null或者“”,则肯定返回true
    
    var str=String(123.56);             //将字符串‘123’转换为string
    console.log(str+""+typeof(str)+"类型");   //123.56是string类型
    •  注意转换后的结果数据的类型是相应的numberstringboolean

    一些特殊的值

    null  ==  undefined;  //返回true
    
    null  ===  undefined;  //返回false
    typeof(null) === "object" ; //返回true,因为历史原因

     


    包装对象

    var num = new Number(123);  
    
    typeof(num);        //返回"object"
    
    var boo = new Boolean(true); 
    
    typeof(boo);        //返回"object"
    
    var str = new String('str');  
    
    typeof(str);        //返回"object"
    • 生成的包装类的值与不使用包装类创建的值相等
    • 但使用包装类创建的类型皆为“object”

    只有对象类型才能够有属性

    1. 是object类型的数据
    2. 使用包装类创建的对象
    var arr=[];         //[]属于object类型
    arr.t=3;
    console.log(arr.t); //绑定的属性t能够正常访问
    
    var obj={};         //{}属于object类型
    obj.t=3;
    console.log(obj.t); //绑定的属性t能够正常访问
    
    var str_obj=new String("aaaaaa");//str_obj是使用包装类创建的string,属于object类型
    str_obj.t="obj_prop";
    console.log(str_obj.t);        //绑定的属性也能够正常的输出
    
    
    var str="aaaaa";    //str属于string类型(注意这里没有使用包装类创建)
    str.t=3;            //这里给str帮顶一个临时属性
    console.log(str.t);    //在后面这里就访问不到,返回undefined
    console.log(str.length) //string类型的一个特殊属性是length,可以访问
    
    var num=123;    //num属于number类型(注意这里没有使用包装类创建)
    num.t=3;            //这里给num帮顶一个临时属性
    console.log(num.t);    //在后面这里就访问不到,返回undefined

    类型检测

    • instanceof运算符用来测试一个对象在其原型链构造函数上是否具有prototype属性。
      • instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

          语法:object instanceof constructor

          

          

       (注意:instanceof 在跨 iframe 的时候不可以使用 ,相当于两个窗口下的对象)

    • typeof操作符返回一个字符串,指示未计算的操作数的类型
    1. typeof可以一次准确判断出“number”、"boolean"、“string”、“undefined”、“function”
    2. Array需要使用 isArray()方法去判断
    • Object.prototype.toString用来准确判断具体的Object类型
      var obj = {};
      var arr = [];
      var da=new Date();
      var re=new RegExp("");
      
      
      console.log(Object.prototype.toString.call(obj)); //[object Object]
      console.log(Object.prototype.toString.call(arr)); //[object Array]
      console.log(Object.prototype.toString.call(null)); //[object Null]
      console.log(Object.prototype.toString.call(da)); //[object Date]
      console.log(Object.prototype.toString.call(re)); //[object RegExp]
       
    • 其他情况的一些检测
    1. 在if()判断语句中不需要将对象转换为boolean
    2. 除了nullundefined,其他的对象都有toString()方法,将该对象转化为string
    3. number类型对象调用toString()方法时,需要用()将自己括起来活着使用双点号
    4. console.log((123).toString()); //'123'
      console.log(123..toString());   //'123'
    5. 判断对象“null”,需要使用 obj === null ,"全等号"的形式
  • 相关阅读:
    一个GOOD的Idea需要伯乐发觉-致敬错过的IDEA
    企业增量发布项目-个人步骤
    JAVA 发送邮件代码---发送HTML内容
    JAVA 发送邮件代码---发送文本内容: 内容使用 进行换行
    Myeclipse8.5开发-安装一:Myeclipse8.5注册码生成程序
    Myeclipse8.5开发-插件安装二:安装findbugs方法
    页面布局
    Flex布局(CSS Flexbox)
    CSS垂直居中的11种实现方式
    CSS3中的px,em,rem,vh,vw辨析
  • 原文地址:https://www.cnblogs.com/HXW-from-DJTU/p/5933023.html
Copyright © 2011-2022 走看看