【Web前端】使用 class 与 extends 实现继承
来源:互联网 发布:婚礼发布网站源码java 编辑:程序博客网 时间:2024/06/08 15:02
前言
在以往需要用到继承的地方,总是用 inherit 以及 prototype 来实现,这里用 class 以及 extends 来改写,有什么好处呢。计时更简单,不会有破坏instanceof运算的危险。
inherit 以及 prototype
这里用我刚学的 Node.js 中流的相关操作做演示:
var stream = require('stream');var util = require('util');function ReadStream() { stream.Readable.call(this);}util.inherits(ReadStream, stream.Readable);ReadStream.prototype._read = function() { this.push('I'); this.push('Love '); this.push('Imooc\n'); this.push(null);};function WritStream() { stream.Writable.call(this);}util.inherits(WritStream, stream.Writable);WritStream.prototype._write = function(chunk, encode, cb) { console.log(chunk.toString()); cb();};function TransformStream() { stream.Transform.call(this);}util.inherits(TransformStream, stream.Transform);TransformStream.prototype._transform = function(chunk, encode, cb) { this.push(chunk); cb();};TransformStream.prototype._flush = function(cb) { this.push('Oh yeah!'); cb();};var rs = new ReadStream();var ws = new WritStream();var ts = new TransformStream();rs.pipe(ts).pipe(ws);
看上去真的挺多的,下面用 extends 改写。
class 与 extends
var stream = require('stream');class ReadStream extends stream.Readable { _read() { this.push('I'); this.push('Love '); this.push('Imooc\n'); this.push(null); }}class WritStream extends stream.Writable { _write(chunk, encode, cb) { console.log(chunk.toString()); cb(); }}class TransformStream extends stream.Transform { _transform(chunk, encode, cb) { this.push(chunk); cb(); } _flush(cb) { this.push('Oh yeah!'); cb(); }}var rs = new ReadStream();var ws = new WritStream();var ts = new TransformStream();rs.pipe(ts).pipe(ws);
看上去简洁多了有没有。而且逻辑也很清晰。
阅读全文
0 0
- 【Web前端】使用 class 与 extends 实现继承
- 继承(extends)与实现(implement)
- Java中的接口interface实现、与继承extends机制。
- 接口类(interface),实现类(class),继承(extends),实现(implements)
- JAVA-继承、覆盖class Student extends Person { }
- 继承extends的使用规则
- 从零开始学_JavaScript_系列(65)——class的继承(2)super、extends与多重继承
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- 第二,Anonymous Inner Class(匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Java类和接口的继承和实现关系(Class和Interface中的extends和implements关系)
- jQuery继承的实现(extends)
- jQuery继承的实现(extends)
- js 实现继承功能(类似java extends)
- java全局变量和局部变量
- 全局安装cnpm
- Js小知识 1
- tensorflow75 Keras on Tensorflow 入门
- 51Nod 1094 和为k 的连续区间 题解
- 【Web前端】使用 class 与 extends 实现继承
- 二叉查找树(Binary Search Tree)
- HDU1054Strategic Game(最小顶点覆盖数)
- 用Elasticsearch做检索
- iOS开发 程序上线发布时遇到的报错:
- iOS 基于ColorMatrix制作简单滤镜
- react+react-router+redux开发体育馆管理系统(3)--场地类型管理模块开发
- abp菜单权限配置
- 关于 USB 3.1 、USB Type-C 你需要知道的几点