JavaScript深入浅出——数据类型(一)
2016-09-08 21:12
253 查看
一、六种数据类型
五种原始类型: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 鸭子类型
五种原始类型: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 鸭子类型
相关文章推荐
- Js 对象中使用[] 和 . 的区别
- 【历史】JavaScript和Java没啥关系!————JavaScript简史
- 【历史】JavaScript和Java没啥关系!————JavaScript简史
- jsp错误路径跳转设置
- Javascript与多线程
- JS 正则表达式
- JS 时间格式化函数~
- sublime2使用jshint
- 百度地图API(一)
- jsp前后台传值那点小事
- javascript helloworld 及数组
- JS与安卓的通信
- 《Javascript权威指南第6版》源码下载
- [置顶] javascript自定义事件应用实例
- javascript网页特效——window.opener
- JavaScript getComputedStyle
- javascript中的“捕获组”是什么意思
- js 自定义事件
- JS 循环遍历JSON数据
- idea 修改jsp页面需要重新部署项目的额问题