SOURCE

console 命令行工具 X clear

                    
>
console
// ES6+语法
/**
 * let:变量不能重复声明;有块级作用域;不存在变量提升;不影响作用域链;在双层for循环中,即使计数器相同,也能互不影响
 * const:一般用于声明常量,一定要赋初始值,有块级作用域,常量的值不能修改,但可以修改原有属性的属性值
 * 解构赋值
 * 模版字符串
 * 对象简化写法(变量和属性名一致的话可以直接写一个)
 * 箭头函数:没有this,始终指向上一层作用域;不能作为构造实例化对象;不能使用arguments变量;
 *         当形参有且只有一个的时候可以省略小括号;当代码体质优一条语句时,return也可以省略
 * 函数参数默认值:可以给形参附初始值
 * rest参数可以重新赋值
 * 扩展运算符:数组的合并:const C = [...A, ...B]
 * Symbol:值是唯一的,用来解决命名冲突问题;不能与其他数据进行运算;不能用for...in循环便利,但可以使用Reflect.ownKeys获取对象的所有键名;
 *         或通过Object.getOwnPropertySymbols来获取所有Symbol键名
 * Promise
 * Set集合
 * Map集合
 * 对象扩展方法:Object.is:判断两个值是否完全相等(Object.is(1,1) => true
 * 模块化:防止命名冲突;代码复用;高维护醒;模块化规范产品;模块功能主要有两个命令构成:export和import
 *        ES6之前的模块化规范有:CommonJS  ===> NodeJs、Browserify、AMD ===> requireJS、CMD ===> seaJS
 * includes
 * async/await
 * 字符串扩展方法:str.trimStart() // 清空头空格、str.trimEnd() // 清空尾空格
 * flat:扁平化数组
 */

// let
let arr = [1, 2, 3]
for (let i = 0; i < arr.length; i++) {
    for (let i = 0; i < arr.length; i++) {
        // console.log(i)
    }
}

// rest
let fn = (...args) => {
    args = 11
    // console.log(args)
}
fn(1, 2, 3)


// 对象方法扩展
const school = {
    name: 'tom'
}
const cities = {
    city: ['GZ']
}
console.log(Object.setPrototypeOf(school, cities)) // 为现有对象设置原型,返回一个新对象:参数1:现有对象,参数2:原型对象
console.log(Object.getPrototypeOf(school))
console.log(school)
console.log(cities)




<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Observe demo</title>
</head>
<body>
    <p>响应式 demo</p>
    <p>响应式 demo</p>
    <p>响应式 demo</p>
</body>
</html>