一、let和const
(1)let:定义变量 优点: 1.let不能重复定义 2.let有块级作用域 3.let没有变量提升
(2)const:定义常量: 只能赋值一次,值不能再修改,
例如:const path=require('path');
注:const具有和let同样的优点
二、解构赋值 可以对数组,对象单独取值
例如:
var obj={name:"alice",age:20,sex:"女",address:"北京海淀"}
var {name,age,address}=obj;
三、模板字符串
用反引号来定义字符串:
即`字符串内容`${ 变量 }
例如:let obj={name:"alice",age:20,sex:"女",address:"北京海淀"}
let {name,age,address}=obj;
let info=`我的姓名是${name},我的年龄是${age},我住 在${address}`
四、默认参数 可以给函数形参设置默认值
例如:function sum(a=默认值,b=0,c=0,d=0) {}
五、...用法
作用: 1.数据列表->数组
适用场景:函数传参 实参是数据列表 ,形参可以用...变量名接收
2, 数组->数据列表
适用场景:将数组展开,转换成数组列表
六、对象增强 let obj={ }
1.如果对象的key和value同名,可简写
例如:name="姓名:"+name;age="age:"+age;address="地址:"+address;
return { name,age,address}
2.对象中的方法也可简写
let obj={name,age:20,sex:"女",address:"北京海淀",say() {alert(this.name);alert(this.age)}}
3.对象之间也能实现继承,通过__proto__属性实现继承
例如:
let sonObj={
__proto__:parentObj,
childrens:['张三','李四','王五'],
play() {alert(this.childrens)}
}
七、箭头操作符
(形参1,形参2,...) => { 程序体 }
相当于
function(形参1,形参2,...) { .... }
注意:箭头函数本身没有自己的this,他的this是箭头函数所在的环境的this
八、class 面向对象,构造函数 prototype 定义一个类:
class 类名 {//相当于ES5构造函数
constructor() {} //原型上方法
方法1(){}
方法2(){}
方法3(){}
方法4(){}
}
子类如何继承父类
class 子类 extends 父类名 {
constructor(name,age,address) {
super(name,age)//必须写
this.address=address;
}
子类方法1(){}
子类方法2(){}
}
注意:子类没有自己的this,必须继承父类的this,父类在子类用super()表示
九:ES6模块
导出:export
(1)导出多个模块:export { 模块1,模块2 }
例如:export { drag,rili }
(2)导出一个默认模块:
export default 默认模块名
注意:一个js文件只能导出一个默认模块
导入:import
(1)导入多个模块:import { 模块1,模块2 } from "要导入的模块js"
(2)导入默认模块:import 模块名 from "要导入的模块js"
导出默认模块和非默认模块: 格式:import 默认模块,{ 模块1,模块2 } from './drag';
node导入导出模块:
导出:module.exports或exports导出
导入:require('导入另一个js文件')