JavaScript深入浅出——数据类型(一)

来源:互联网 发布:js中使用java变量 编辑:程序博客网 时间:2024/05/17 06:40
一、六种数据类型
五种原始类型:number,string,boolean,null,undefined
一种对象类型:object,包含Function,Array,Date....

二、隐式转换
1.+和-
"37"-7    //30
"37"+7    //377
减号表示减法运算,加号表示字符串拼接

巧用+/-规则转换类型:num-0变数字,num+0变字符串

2.a==b
"1.23"==1.23  //当等号一边是字符串,一边是数字,会把字符串转为数字再进行比较
0==false
null==undefined
new Object()==new Object()
[1,2]==[1,2]

类型相同,同===
类型不同,尝试类型转换和比较:
null==undefined相等
number==string  //字符串转数字
boolean==?        //先将布尔值转数字
object==number/string   //将对象转为基本类型

3.a===b,严格等于
类型不同,返回false
类型相同:大小长度或其他进行比较
特殊:NaN≠NaN
           new Object≠new Object(对象的比较是用引用去比较而不是值进行比较)

三、包装对象
基本数据类型是没有属性和方法的,但是JS会智能将string,number,boolean类型暂时转换包装成对象,使用过后自动删除,所以var str="string";str.length;也是对的,str.t=10;可以显示str.t为10,但是再次输出str就会显示为undefined,因为基本数据类型包装为对象是暂时的

四、类型检测
1.type of适合基本类型及function检测,但不适合null,遇到会失效。typeof null===object

2.Class,通过{}.toString拿到,适合内置对象和基元类型,遇到null和undefined失效;

3.instanceof适合自定义对象,也可以用来检测原生对象,在不同iframe和widow间检测时失效
注意:不同window或iframe之间对象类型检测不能使用instanceof

4.Object.prototype.toString.apply([]);
Object.prototype.toString.apply(function(){});
Object.prototype.toString.apply(null); //在IE7、IE8会返回Object类型
Object.prototype.toString.apply(undefined);

5.constructor继承自原型,指向构造对象的构造器(构造函数),可被改写

6.duck type 鸭子类型




0 0
原创粉丝点击