简单改动
1 对象字面量增强写法: const obj = {
name, hh() {
} }
2 模板字符串: let name = "熊二" / let kk = "${name}是个憨憨"
3 默认参数的定义: function test(a=1, b=2, c=3) {
}
4 形参为对象的时候, 不传参会报错, 所以一般会给一个默认对象: function test( {
a, b, c} = {
}) {
}
5 Symbol 新的数据类型: 主要用于对象定义的属性, 每创建的一个 Symbol值, 都是独一无二的 (就是不等的)
6 一句代码实现数组去重:
定义变量
1 定义
1 let name = "zxc" 定义变量
2 const name = "CAN" 定义常量
2 let 特点
1 在一个作用域下不能声明相同的变量名 错误示例: {
let a = 2; let a = 3}
2 可识别块级作用域 所以不能在外部访问 --> 错误示例: {
let a = 2;} console.log(a)
3 变量的声明不被提升
4 let声明的变量不会添加到 window对象下
3 const 基于 let增加的特点
1 声明的同时必须赋值
2 赋值后它值的地址不能改变
3 通常命名大写
4 在ES6开发中, 优先使用const, 如果需要改变某个标识符的时候就使用 let (会让代码尽可能的规范)
…运算符的基础使用
1 基础功能 (展开)
-----------------------------------------------------------------------------
1 console.log( ..."zhang" )
2 console.log('z', 'h', 'a', 'n', 'g')
3 console.log( ...[1, 2, 3, 4 ,5])
4 console.log(1, 2, 3, 4, 5)
-----------------------------------------------------------------------------
2 拷贝功能
-----------------------------------------------------------------------------
1 拷贝对象 (等价于创建了一个全新的对象, 不同的引用地址)
1 let {
...hh} = obj
2 let hh = {
...obj}
2 拷贝数组 (等价于创建了一个全新的数组, 不同的引用地址)
1 let [...hh] = arr
2 let hh = [...arr]
-----------------------------------------------------------------------------
解构赋值的基础使用
1 基础功能
-----------------------------------------------------------------------------
1 let [a, b] = [1, 2, 3, 4, 5]
2 let {
a, c} = {
a: 1, b: 2, c: 3}
-----------------------------------------------------------------------------
2 解构赋值 + ...运算符
-----------------------------------------------------------------------------
1 let [a,b,...c] = [1, 2, 3, 4, 5]
2 let {
a,...c} = {
a: 1, b: 2, c: 3}
-----------------------------------------------------------------------------
3 高级使用
-----------------------------------------------------------------------------
1 函数传参
定义: function hh({
a, b, c}) {
console.log(a, b, c)}
调用: hh({
a: 1, b: 2, c: 3})
定义: function hh( [...arr]) {
console.log(arr)}
调用: hh([1, 2, 3])
定义: function hh(...arr) {
console.log(arr)}
调用: hh(1, 2, 3)
-----------------------------------------------------------------------------
箭头函数
1 理解:
1 把函数当做参数时常用
2 没有实参列表
3 内部没有 this指向
2 代码:
1 () => {
}
2 hh => {
..} --> 只有一位参数省略小括号
3 hh => console.log( hh) --> 一句执行语句 或 return一句代码 (可省略大括号)
class类的定义和继承
class 类的定义
----------------------------------------------------------------------------------
class Cat{
constructor(x) {
this.name = x
this.pp = function() {
}
}
xx = '呵呵'
hh() {
}
kk() {
console.log('kk方法 --- 欢喜')}
static a1() {
console.log(66)}
}
let cat = new Cat('哈哈')
console.log(cat.name)
console.log(cat.xx)
cat.kk()
console.log(cat)
console.log(cat.__proto__)
Cat.a1()
-----------------------------------------------------------------------------------------
class 类的继承 (基于上面定义的类)
-----------------------------------------------------------------------------------------
class Dog extends Cat{
constructor(f, x) {
super(x)
this.food = f
}
}
let dog = new Dog('骨头', '狗')
console.log(dog.food)
dog.kk()
console.log(dog.name)
-----------------------------------------------------------------------------------------