你不知道的JS-读书笔记(四)--混合对象类
2017-11-23 14:58
323 查看
寄生继承
//“传统的 JavaScript 类” Vehicle function Vehicle() { this.ehgines = 1; } Vehicle.prototype.ignition = function() { console.log( "Turning on my engine." ); }; Vehicle.prototype.drive = function() { this.ignition(); console.log( "Steering and moving forward!" ); }; //“寄生类” Car function Car() { // 首先, car 是一个 Vehicle var car = new Vehicle(); // 接着我们对 car 进行定制 car.wheels = 4; // 保存到 Vehicle::drive() 的特殊引用 var vehDrive = car.drive; // 重写 Vehicle::drive() car.drive = function() { vehDrive.call( this ); console.log("Rolling on all " + this.wheels + " wheels!" ); return car; } var myCar = new Car(); // var myCay = Car(); 更好,避免创建并丢弃多余的对象 myCar.drive() // "Turning on my engine." // "Steering and moving forward!" // "Rolling on all 4 wheels!"
小结
传统的类被实例化时, 它的行为会被复制到实例中。 类被继承时, 行为也会被复制到子类中。多态(在继承链的不同层次名称相同但是功能不同的函数) 看起来似乎是从子类引用父类, 但是本质上引用的其实是复制的结果。
JavaScript 并不会(像类那样) 自动创建对象的副本。
相关文章推荐
- 你不知道的JS-读书笔记(三)--this和对象原型
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- Extjs/js两个对象的属性进行混合
- Build Your Own Angularjs 读书笔记(AngularJS牛逼的地方在于它内嵌了一个表达式到Function对象的编译器。。。当然还有DI框架)
- 你不知道的JS-读书笔记(五)--原型[Prototype]
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- 翻译连载 | JavaScript轻量级函数式编程-第7章: 闭包vs对象 |《你不知道的JS》姊妹篇
- js深入研究之扩展类,克隆对象,混合类(自定义的extend函数,clone函数,与augment函数)
- 面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式
- #笔记#圣思园 JavaWeb 第57讲——JS继承:对象冒充、call方法、apply方法、原型链方式、混合方式
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模)
- 读书笔记 - js高级程序设计 - 第六章 面向对象的程序设计
- JS高级程序设计--读书笔记(js对象创建)
- 你不知道的javascript之JS原型对象和原型链
- JS高级程序设计--读书笔记(BOM对象)
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
- js中在不知道属性名时获取属性对象
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)