首页 > 代码库 > Javascript进阶(2)---对象类型

Javascript进阶(2)---对象类型

Javascript进阶(2)---对象类型

Javascript原始对象类型(6种):

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

 


 

关于NaN

  • NaN是一个特殊的number类型,它与任何数值都不相等,也包括他自己
  • typeof(NaN)的值为number

 

隐式转换

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

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

1  var result = "37" - 7 

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

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

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

 


 

 显式转换

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

 

一些特殊的值

null  ==  undefined;  //返回truenull  ===  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);    //在后面这里就访问不到,返回undefinedconsole.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

    [1,2] instanceof Array === true;    new Object() isntanceof Array === false  ;

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

  • typeof操作符返回一个字符串,指示未计算的操作数的类型
  1. typeof可以一次准确判断出“number”、"boolean"、“string”、“undefined”、“function”
  2. Array需要使用 isArray()方法去判断  
  • 其他情况的一些检测
  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 ,"全等号"的形式

 

Javascript进阶(2)---对象类型