概览
箭头函数、模板字符串、promise、generator(iter.next去执行yield内容)、class、module
杂记
- 作用域,用代码块+let 替代IIFE,特别是let可以处理闭包的问题
补充见另一篇笔记
|
|
2,用模板变量代替字符串拼接
|
|
模板字面量可以横跨多行。
空格和换行都会保留
3,函数的默认参数应该在最右边,实参与形参从左开始匹配
4,class
|
|
注意点:
- class不存在变量提升,也就是说它的使用必须要在定义后
私有方法:
- 用 _functionName
- 把私有方法都放外部,class内部只存暴露出去的公有方法,比如
- 12345678class Widget {foo (baz) {bar.call(this, baz);}// ...}function bar(baz){...}
用symbol处理私有方法和属性的名称
123456789101112const privateFun = Symbol('bar');const privateParam = Symbol('bar');class test1{//私有方法[bar](param){//私有属性this[privateParam] = ...}fun1(){this[bar]("实参");}}
5, 继承
通过extends关键字,继承了父类的所有属性和方法。等于复制了一个Point类
6, 静态属性方法
- static 函数
static方法是被类所调用,实例是没有办法调用的。而且可以被继承
|
|
静态属性:
类有静态属性,但是类内部是不能有静态属性的。只能在外部12345class Foo {}Foo.prop = 1;Foo.prop // 1- 实例属性
之前是在构造函数中定义实例属性,现在可以放在外部123456789101112131415161718192021class MyClass {myProp = 42;constructor() {console.log(this.myProp); // 42//以前的写法:this.myProp = ...}}//或者更复杂的是class ReactCounter extends React.Component {newProps = {count:3;};state; //constructor里面已经定义的实例属性constructor(props) {super(props);this.state = {count: 0};}}
- 实例属性
es7中静态属性提案,将静态属性也像实例属性一样放进来
- Module模块化123456789101112131415161718192021var firstName = 'mei';var lastName = 'qingguang';var year = 1988;//exportexport {firstName, lastName, year};//importimport {firstName, lastName, year} from "./module1.js"console.log(firstName);或者import * as Module1 from "./module1.js"console.log(Module1.firstName)//整体输出的话//test1.jsexport default function(){...}import yourModuleName from "test1.js"yourModuleName() //函数执行