在JavaScript的世界里,一切都是对象。
但是某些对象还是和其他对象不太一样。为了区分对象的类型,我们用typeof
操作符获取对象的类型,它总是返回一个字符串:
typeof 123; // 'number'
typeof NaN; // 'number'
typeof 'str'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Math.abs; // 'function'
typeof null; // 'object'
typeof []; // 'object'
typeof {}; // 'object'
可见,number
、string
、boolean
、function
和undefined
有别于其他类型。特别注意null
的类型是object
,Array
的类型也是object
,如果我们用typeof
将无法区分出null
、Array
和通常意义上的object——{}
。
包装对象
除了这些类型外,JavaScript还提供了包装对象,熟悉Java的人肯定很清楚int
和Integer
这种关系。number
、boolean
和string
都有包装对象。在JavaScript中,字符串也区分string
类型和它的包装类型。包装对象用new
创建:
var n = new Number(123); // 123,生成了新的包装类型
var b = new Boolean(true); // true,生成了新的包装类型
var s = new String('str'); // 'str',生成了新的包装类型
虽然包装对象看上去和原来的值一模一样,显示出来也是一模一样,但他们的类型已经变为object
了!所以,包装对象和原始值用===
比较会返回false
:
typeof new Number(123); // 'object'
new Number(123) === 123; // false
typeof new Boolean(true); // 'object'
new Boolean(true) === true; // false
typeof new String('str'); // 'object'
new String('str') === 'str'; // false
所以不建议大家使用包装对象。
Date
在JavaScript中,Date
对象用来表示日期和时间。
var now = new Date(); //Wed Jan 15 2020 14:23:20 GMT+0800 (中国标准时间)
now.getFullYear(); //年 2020
now.getMonth(); // 月 0 0~11 代表月
now.getDate(); // 日 15
now.getDay(); // 星期几 3
now.getHours(); // 时 14
now.getMinutes(); // 分 23
now.getSeconds(); // 秒
now.getTime(); // 时间戳 全世界统一 1970 1.1 0:00:00 毫秒数
console.log(new Date(1579069400636)) //时间戳转为时间 Wed Jan 15 2020 14:23:20 GMT+0800 (中国标准时间)
转换
now = new Date(1579069400636)// 注意,调用是一个方法,不是一个属性!
//Wed Jan 15 2020 14:23:20 GMT+0800 (中国标准时间)
ƒ toLocaleString() { [native code] }
now.toLocaleString() //"2020/1/15 下午2:23:20"
now.toGMTString() //"Wed, 15 Jan 2020 06:23:20 GMT"
JSON
早期,所有数据传输习惯使用 XML 文件:
- JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
- 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
- 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在JavaScript 一切皆为对象、任何js 支持的类型都可以用JSON来表示:
- number:和JavaScript的
number
完全一致; - boolean:就是JavaScript的
true
或false
; - string:就是JavaScript的
string
; - null:就是JavaScript的
null
; - array:就是JavaScript的
Array
表示方式——[]
; - object:就是JavaScript的
{ ... }
表示方式。
格式:
- 对象都用 {}
- 数组都用 []
- 所有的键值对 都是用 key:value
JSON字符串 和 JS 对象的转化
var user = {
name: "jjh",
age: 3,
sex: '男'
}
//1.对象转化为json字符串
var jsonUser = JSON.stringify(user);
console.log(jsonUser); //{"name":"jjh","age":3,"sex":"男"}
//2.json 字符串转化为对象 参数为 json 字符串
var obj = JSON.parse('{"name":"qinjiang","age":3,"sex":"男"}');
console.log(obj);//{name: "jjh", age: 3, sex: "男"}