es6 javascript中的class理解
来源:互联网 发布:现金赌博软件手机软件 编辑:程序博客网 时间:2024/06/07 07:45
类相当于实例的原型, 所有在类中定义的方法, 都会被实例继承。 如果在一个方法前, 加上static关键字, 就表示该方法不会被实例继承, 而是直接通过类来调用, 这就称为“ 静态方法”。
上面代码中, Foo类的classMethod方法前有static关键字, 表明该方法是一个静态方法, 可以直接在Foo类上调用( Foo.classMethod()), 而不是在Foo类的实例上调用。 如果在实例上调用静态方法, 会抛出一个错误, 表示不存在该方法。父类的静态方法, 可以被子类继承。上面代码中, 父类Foo有一个静态方法, 子类Bar可以调用这个方法。
静态方法也是可以从super对象上调用的。
静态属性指的是 Class 本身的属性, 即Class.propname, 而不是定义在实例对象( this) 上的属性。
上面的写法为Foo类定义了一个静态属性prop。目前, 只有这种写法可行, 因为 ES6 明确规定, Class 内部只有静态方法, 没有静态属性。ES7 有一个静态属性的提案, 目前 Babel 转码器支持。
这个提案对实例属性和静态属性, 都规定了新的写法。
( 1) 类的实例属性
类的实例属性可以用等式, 写入类的定义之中。上面代码中, myProp就是MyClass的实例属性。 在MyClass的实例上, 可以读取这个属性。
以前, 我们定义实例属性, 只能写在类的constructor方法里面。上面代码中, 构造方法constructor里面, 定义了this.state属性。
有了新的写法以后, 可以不在constructor方法里面定义。这种写法比以前更清晰。
为了可读性的目的, 对于那些在constructor里面已经定义的实例属性, 新写法允许直接列出。(2) 类的静态属性
类的静态属性只要在上面的实例属性写法前面, 加上static关键字就可以了。
class MyClass {
static myStaticProp = 42;
constructor() {
console.log(MyClass.myProp); // 42
}
}
同样的, 这个新写法大大方便了静态属性的表达。
上面代码中, 老写法的静态属性定义在类的外部。 整个类生成以后, 再生成静态属性。 这样让人很容易忽略这个静态属性, 也不符合相关代码应该放在一起的代码组织原则。 另外, 新写法是显式声明( declarative), 而不是赋值处理, 语义更好。阅读全文
0 0
- es6 javascript中的class理解
- ES6:JavaScript中的类Class
- JavaScript 使用对象及ES6中的class
- 《深入理解ES6》笔记—— JavaScript中的类class(9)
- javascript ES6之class
- JavaScript ES6 class实例
- es6 javascript的class类中的 get和set
- es6中的class类
- es6中的class
- 小程序中的ES6 Class
- es6中的class类下
- ES6中的class创建类
- ES6 Class 中的 super 关键字
- javascript中的__proto__和prototype,以及ES6中class的原型相关
- es6 javascript的Class 类的继承
- es6 javascript的Class 的 Generator 方法
- 理解es6中的暂时性死区
- JavaScript ES6中的新特性
- xml解析工具类
- 转 设计模式
- 【百度AI人脸核身+公安验证】IOS示例工程运行
- ios 应用打开 图片 文档
- 剑30-最小的K个数
- es6 javascript中的class理解
- Fragment显示问题
- Xshell实现Windows上传文件到Linux主机
- C++异常处理
- 放球问题
- 替换空格问题
- 二分搜索
- 更改MYSQL的ROOT用户的密码
- java中常用的日志框架-logback和log4j