1 默认参数
let link = (height=50, color='red') => { }
2 模板字符串 ${变量名}
let name = `your name is ${first} ${last}`;
3 多行字符串
var name = ` your name is $(fitst),
and then his name is ${last} `
4 解构赋值
let{house, mouse} = obj.data
5 箭头函数
在函数表达式中使用, 只有一个参数时, 括号()可以忽略; 没有参数和多个参数时要加上()
函数只有一行的简洁函数体时, 不用声明return直接返回; 块级函数体需要手动return
this 是固定的
let fn = x => x * x
var link = ()=>{}
arrs.map(value => { })
6 Promise
resolve表示进行下一步then, reject表示下一步catch
then也是一个promise, 参数是resolve传下来的参数
new Promise((resolve, reject)=>{
....
resolve()
}).then(()=>{
}).catch(()=>{
})
Promise.all() 将多个promise实例包装成一个新的promise实例, 成功返回一个结果数组, 失败返回最先失败状态的值
Promise.all(promiseArray).then(res => {
)
7 块作用域 let 和 const
let 声明块级变量
const 声明块级常量,简单数据类型不可以变, 对象和函数可以变; 因为const指向地址
8 类 class
属性在构造函数中分配; 方法不用关键字function; constructor使用默认参数;
class baseModel {
constructor(options, data){
this.name = 'base;
this.url = 'http://baidu.com';
this.data = data;
this.options = options;
}
getName(){
console.log(this.name)
}
}
let base = new baseModel()
base.getName()
8.2 继承
先在该类找属性和方法, 如果找不到, 再去继承的类里找
class AccountModel extends baseModel {}
9 模块 module
es5中, 使用requireJs,一个文件一个模块, 暴露属性和方法
module.exports = {
port: 3000,
getAccounts: function(){
console.log(this.port)
}
}
引用时, 变量名表示整一个模块, 相当于一个对象
var config = require('module.js');
var port = config.port
es6, 使用commonJs
export default name = 'rmy';
export let port = 3000;
export function getAccount(){
...
}
默认属性不用放在{}里
import name, {port, getAccount} from 'module.js';
10 扩展运算符 ...
1 数组拼接, 解开数组[]暴露元素
var arr1 = [1,2,3]; var arr2 = [4,5,6];
arr1.push(...arr2)
[...arr1, ...arr2]
2 对象拼接
var obj1= { name: 'my'}; var obj2 = {sex: 'male'};
var obj3 = {...a, ...b, x: 1}
11 数组方法
数组遍历
参数: 元素本身, 元素下标, 数组本身
- filter() 返回一个所有通过测试的元素的新数组, 返回true表示保留该元素, 返回false表示不保留该元素
let newArr = arr.filter(item=>{ return item > 3;})
- map() 原数组中每个元素调用一个指定方法后, 返回值组成一个新的数组
llet a = [1, 2, 3,4 5]
let b = a.map(item=>{
return item + 1;
})
- forEach() 遍历数组中每个元素, 没有返回值
- every() 遍历数组, 每个都通过测试, 则返回true
- some() 遍历数组,有一个通过测试,则返回true
改变自身数组的方法:
push() 在末尾添加元素
pop() 删除并返回最后一个元素,
unshift() 在开头添加元素
shift() 删除并返回第一个元素
splice() 删除元素, 替换元素, 插入元素
reverse() 数组翻转
sort() 数组排序
不改变自身数组的方法
concat() 拼接数组 let newarr = arr1.concat(arr2, arr3);
join() 拼接成字符串 let arrStr = arr.join('_');
slice() 数组抓取 let newArr = arr.slice(0, 5); 第二个参数可以为负数
valueOf()---返回数组对象的原始值。
12 对象
Object.assign() 对象合并
第一个参数是目标对象, 从第二个参数开始, 按顺序拼接供应者的属性到第一个参数,
有相同的属性则会被覆盖
var recevier = {}
Object.assign(recevier, {type: 'js', name: 'file.js'}, {type: 'css'})
for in 遍历对象自身和继承的可枚举属性