JavaScript学习笔记(三十三) 经典模式三 借用构造方式并设置原型
来源:互联网 发布:c 数组的长度 编辑:程序博客网 时间:2024/05/22 03:07
经典模式三 借用构造方便并设置原型(Classical Pattern #3—Rent and Set Prototype)
组合前面两种模式,你首先借用parent构造方法,然后设置child的原型指向parent构造函数的新实例:
function Child(a, c, b, d) { Parent.apply(this, arguments);}Child.prototype = new Parent();这样做的好处就是结果对象(result objects)获得了parent的自身属性的拷贝和parent复用函数的引用(原型的成员)。Child也可以传递任何参数给parent构造函数。
这种行为可能你和你在Java中期望的接近,你继承了在parent中的所有东西(everything),并且同时修改自身属性是安全的,没有修改parent的风险。
一个缺点就是parent构造函数被调用两次,所以它可能是低效的。最终,自身属性(比如在我们例子中的name)被继承两次。
让我们看一下下面的代码并做一些测试:
// the parent constructorfunction Parent(name) { this.name = name || 'Adam';}// adding functionality to the prototypeParent.prototype.say = function () { return this.name;};// child constructorfunction Child(name) { Parent.apply(this, arguments);}Child.prototype = new Parent();var kid = new Child("Patrick");kid.name; // "Patrick"kid.say(); // "Patrick"delete kid.name;kid.say(); // "Adam"不像前面的模式,现在say()方法被正确继承。你也注意到name属性被继承了两次,并且在delete了自身的拷贝后,从原型链式而来的name属性会被宠幸。
图6-6展示了两个对象之间工作的关系,这种关系和在图6-3中展示的关系相似,但我们得到的方式不同:
- JavaScript学习笔记(三十三) 经典模式三 借用构造方式并设置原型
- JavaScript学习笔记(三十二) 经典继承模式二-借用构造方法
- JavaScript学习笔记(三十四) 经典模式四-共享原型
- javascript继承,原型链继承、借用构造函数、组合继承
- 【JavaScript学习】面向对象的程序设计(4):借用构造函数(经典继承)
- JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
- JavaScript 学习笔记 三 原型(prototype)
- JavaScript学习笔记(四十) 借用方法
- javascript 学习笔记二【原型链模式】
- JavaScript学习-组合使用构造函数和原型模式
- javascript工厂方式、构造函数、原型方式
- javascript工厂方式、构造函数、原型方式
- javascript 学习笔记3-构造函数、类和原型
- JavaScript 继承---借用构造函数
- javascript——混合继承(借用构造函数+原型继承)
- js 继承 三种常用方法 原型链-借用构造函数-组合式继承
- js 创建对象的三种方式——工厂模式、构造函数模式、原型模式
- JavaScript原型学习笔记
- Concept Neural Network — the very beginning
- 巧用cssText属性批量操作样式
- vector
- Minimum(Maximum) Depth of Binary Tree
- flex工具操作
- JavaScript学习笔记(三十三) 经典模式三 借用构造方式并设置原型
- Android-JNI3
- WSO2 ESB 学习(二) ---安装篇
- Ruby实现单例模式
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- poj-2029-Get Many Persimmon Trees-预处理
- SDL-第一课“hello world”
- [Paper study] Delay learning and polychronization for reservoir computing
- JAVA设计模式之观察者模式2