基本类型
- Boolean
- Number
- String
- Null --> typeof null – object
- Undefined --> typeof undefined – undefined
- Object(引用类型)
- ES6 - Symbol
数组
ES6的数组拓展方法
- Array.from()将对象转为真正的数组或类数组转数组
let obj = {
name: 'Lucy',
age: 100,
sex: 'female',
// length: 3
};
console.log(Array.from(obj));//没有length,输出一个空数组,有length,输出length长度的数组,但是数组项均为undefined
//这种格式的对象才会被转为数组:属性名为数组索引,最后一项加上length,当然,length就算不是写在最后一项也能转换成功,但是我们习惯写在最后一项。
let obj1 = {
0: 'Tom',
1: 100,
2: 'male',
length: 3
}
console.log(Array.from(obj1)); //["Tom", 100, "male"]
//类数组转数组
let aLi = document.querySelectorAll('li');
aLi = Array.from(aLi); //转换
aLi.push(document.body);
console.log(aLi);// [li, li, li, body]
- Array.of() 方法用于将一组值, 转换为数组方法的括号里面放入要转换的值,即使只有一个值,也会转换成数组,如果不放入值,就会生成一个空数组
console.log(Array.of(1, 2, 3)); //[1, 2, 3]
console.log(Array.of(1)); //[1]
console.log(Array.of('a', 'b', 'c'));//["a", "b", "c"]
console.log(Array.of());//[]
- fill() 方法使用给定值, 填充一个数组
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(arr.fill('hello')); //["hello", "hello", "hello", "hello", "hello", "hello", "hello", "hello", "hello", "hello"]
console.log(arr.fill('hello', 3, 5)); //参1:用来替换的字符 参2:开始的索引 参3:结束的索引,不包括该索引项。
Set结构
ES6提供了一种数据结构Set. 它类似于数组,但是成员的值都是唯一的,没有重复的值。
他可以用来做简单的数组去重
var arr = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 4, 4, 4, 6, 6, 6];
console.log([...new Set(arr)]);// [1, 2, 3, 4, 5, 6]
set用来表示长度的不再是数组的length了,而是用size来表示他的项的长度。
let set1 = new Set([1,2,3]);
console.log(set1);//3
map结构
JavaScript 的对象(Object),只能用字符串当作键。这给它的使用带来了很大的限制。ES6 提供了 Map 数据结构。它类似于对象,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键
let map1 = new Map([
['name', 'King'],
['age', 100]
]);
console.log(map1);//{"name" => "King", "age" => 100}
同样的,他也用size来表示map结构的长度。
对象
ES6新增对象方法
// Object.assign(目标对象,obj1,obj2,.....)用于对象的合并,将源对象的所有可枚举属性,复制到目标对象。
let obj1 = {
a: 1,
b: 2,
c: 3
};
let obj2 = {
c: 4,
d: 5,
e: 6
};
let obj3 = {
d: 7,
e: 8,
f: 9
}
let obj = {
};
Object.assign(obj, obj1, obj2, obj3); //属性相同,后面覆盖前面。
console.log(obj);//后面的三个对象内容都复制到第一个对象里面,属性重名后面覆盖前面的
console.log(obj2);//原对象并未改变
函数
箭头函数
箭头函数是函数的简洁写法
- 箭头函数的内部this来自于父级,函数声明时即绑定,不可再更改this指向(用apply、call、bind方法也不行)
- 箭头函数适合用于简单逻辑的纯函数的场景中,如用在map、reduce、filter、foreach的回调函数定义中
- 箭头函数一定是匿名函数
- 不要在最外层定义箭头函数,因为在函数内部操作this会很容易污染全局作用域window。最起码在箭头函数外部包一层普通函数,将this控制在可见的范围内
//箭头函数的形式如:(参数)=>{语句块};
v => {
return v;}//只有一个参数,可以省略括号
v => v ; //只有一条语句,可以省略花括号,return也可以省略