本节记录了
- 标准对象
- Date
标准对象
Javascript中一切都是对象,为了区分对象类型,我们用 typeof 操作符获取对象类型,它总是返回一个字符串:
1 | typeof 123; // 'number' |
特别注意 null 的类型是 Object,Array的类型也是 Object,如果我们用typeof将无法区分出null, array 和通常意义的object–{}
包装对象
包装对象用new创建
1 | var n = new Number(123); // 123,生成了新的包装类型 |
虽然看上去一模一样,但是经过以上包装后,他们的类型全都变成了object!包装对象和原始值通过===比较会返回false
1 | typeof new Number(123); // 'object' |
另外如果我们在使用Number、Boolean和String时,没有写new会发生什么情况?
此时,Number()、Boolean和String()被当做普通函数,把任何类型的数据转换为number、boolean和string类型(注意不是其包装类型):
1 | var n = Number('123'); // 123,相当于parseInt()或parseFloat() |
需要遵守的规则
- 不要使用new Number(), new Boolean(), new String()创建包装对象
- 用parseInt()或parseFloat来转换任意类型到number
- 用String()来转任意类型到string,或者直接调用某个对象的toString()方法
- 通常不必把任意类型转换为boolean再判断,因为可以直接写if(myVar){…}
- typeof可以判断出number, boolean,string,function和undefined
- 判断array 要使用 Array.isArray(arr);
- 判断null 请使用myVar===null
- 判断某个全局变量是否存在 typeof window.myVar === ‘undefined’
- 函数内部判断某个变量是否存在用 type myVar === ‘undefined’
特别注意null和undefined没有toString()方法. number对象调用toString()报错需要按一下方式处理
1 | 123.toString(); // SyntaxError |
Date
Date对象用来表示时间和日期
获取当前系统时间
1 | var now = new Date(); |
注意当前时间是浏览器从本机操作系统获取的时间,所以不一定准确,因为用户可自己随意设置
时区
Date对象表示的时间都是按浏览器所在的时区显示的,不过我们既可以显示本地时间,也可以显示调整后的时间
1 | var d = new Date(1486626030666); |
本笔记根据 廖雪峰老师的JavaScript 教程记录