摘要:
1、ES6提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两者语义相同,而且let没有副作用。 2、var命令存在变量提升效用,let命令没有这个问题。建议不再使用var命令,而是使用let命令取代。 3、在let和const之间,建议优先使用const,尤其是 阅读全文
摘要:
1、<script>标签打开defer或async属性,脚本就会异步加载。渲染引擎遇到这一行命令,就会开始下载外部脚本,但不会等它下载和执行,而是直接执行后面的命令。 defer与async的区别是:前者要等到整个页面正常渲染结束,才会执行;后者一旦下载完,渲染引擎就会中断渲染,执行这个脚本以后,再 阅读全文
摘要:
1、如果想设置跨模块的常量(即跨多个文件),或者说一个值要被多个模块共享,可以采用下面的写法。 2、如果要使用的常量非常多,可以建一个专门的constants目录,将各种常量写在不同的文件里面,保存在该目录下。 然后,将这些文件输出的常量,合并在index.js里面。 使用的时候,直接加载index 阅读全文
摘要:
1、如果想为输入的变量重新取一个名字,import命令要使用as关键字,将输入的变量重命名。 2、import命令具有提升效果,会提升到整个模块的头部,首先执行。这种行为的本质是,import命令是编译阶段执行的,在代码运行之前。 3、由于import是静态执行,所以不能使用表达式和变量,这些只有在 阅读全文
摘要:
1、在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种。前者用于服务器,后者用于浏览器。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。 2、ES6 可以 阅读全文
摘要:
1、类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。 2、父类的静态方法,可以被子类继承。静态方法也是可以从super对象上调用的。 3、静态属性指的是Class本身的属性,即 阅读全文
摘要:
1、原生构造函数会忽略apply方法传入的this,也就是说,原生构造函数的this无法绑定,导致拿不到内部属性。比如,Array构造函数有一个内部属性[[DefineOwnProperty]],用来定义新属性时,更新length属性,这个内部属性无法在子类获取,导致子类的length属性行为不正常 阅读全文
摘要:
1、Object.getPrototypeOf方法可以用来从子类上获取父类。因此,可以使用这个方法判断,一个类是否继承了另一个类。 2、super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。 第一种情况,super作为函数调用时,代表父类的构造函数。ES6 阅读全文
摘要:
1、Class之间可以通过extends关键字实现继承。 上面代码中,constructor方法和toString方法之中,都出现了super关键字,它在这里表示父类的构造函数,用来新建父类的this对象。 子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类 阅读全文
摘要:
1、与函数一样,类也可以使用表达式的形式定义。 这个类的名字是MyClass而不是Me,Me只在Class的内部代码可用,指代当前类。 如果类的内部没用到的话,可以省略Me,也就是可以写成下面的形式。 2、采用Class表达式,可以写出立即执行的Class。 3、私有方法是常见需求,但 ES6 不提 阅读全文