JavaScript高级程序设计之面向对象的程序设计之继承之寄生式继承第6.3.5讲笔记
来源:互联网 发布:r230搓纸轮 淘宝 编辑:程序博客网 时间:2024/04/29 10:10
寄生式(parasitic)继承是与原型式继承紧密相关的一种思路,并且同样也是由克罗克福德推而广
之的。寄生式继承的思路与寄生构造函数和工厂模式类似,即创建一个仅用于封装继承过程的函数,该
函数在内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。以下代码示范了寄
生式继承模式。
在这个例子中,createAnother()函数接收了一个参数,也就是将要作为新对象基础的对象。然
后,把这个对象(original)传递给object()函数,将返回的结果赋值给clone。再为clone 对象
添加一个新方法sayHi(),最后返回clone 对象。可以像下面这样来使用createAnother()函数:
这个例子中的代码基于person 返回了一个新对象——anotherPerson。新对象不仅具有person
的所有属性和方法,而且还有自己的sayHi()方法。
在主要考虑对象而不是自定义类型和构造函数的情况下,寄生式继承也是一种有用的模式。前面示
之的。寄生式继承的思路与寄生构造函数和工厂模式类似,即创建一个仅用于封装继承过程的函数,该
函数在内部以某种方式来增强对象,最后再像真地是它做了所有工作一样返回对象。以下代码示范了寄
生式继承模式。
function createAnother(original){var clone = object(original); //通过调用函数创建一个新对象clone.sayHi = function(){ //以某种方式来增强这个对象alert("hi");};return clone; //返回这个对象}
在这个例子中,createAnother()函数接收了一个参数,也就是将要作为新对象基础的对象。然
后,把这个对象(original)传递给object()函数,将返回的结果赋值给clone。再为clone 对象
添加一个新方法sayHi(),最后返回clone 对象。可以像下面这样来使用createAnother()函数:
var person = {name: "Nicholas",friends: ["Shelby", "Court", "Van"]};var anotherPerson = createAnother(person);anotherPerson.sayHi(); //"hi"
这个例子中的代码基于person 返回了一个新对象——anotherPerson。新对象不仅具有person
的所有属性和方法,而且还有自己的sayHi()方法。
在主要考虑对象而不是自定义类型和构造函数的情况下,寄生式继承也是一种有用的模式。前面示
范继承模式时使用的object()函数不是必需的;任何能够返回新对象的函数都适用于此模式。
使用寄生式继承来为对象添加函数,会由于不能做到函数复用而降低效率;这一
点与构造函数模式类似。
0 0
- JavaScript高级程序设计之面向对象的程序设计之继承之寄生式继承第6.3.5讲笔记
- JavaScript高级程序设计之面向对象的程序设计之继承之寄生组合式继承第6.3.6讲笔记
- JavaScript高级程序设计之面向对象的程序设计之继承之组合继承第6.3.3讲笔记
- JavaScript高级程序设计之面向对象的程序设计之继承之原型式继承第6.3.4讲笔记
- JavaScript高级程序设计之面向对象的程序设计之继承之原型链 第6.3.1讲笔记
- JavaScript高级程序设计之面向对象的程序设计之继承之借用构造函数第6.3.2讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之寄生构造函数模式 第6.2.6讲笔记
- JavaScript高级程序设计之面向对象的程序设计之理解对象第6.1讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之动态原型模式 第6.2.5讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之工厂模式第6.2.1讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之 构造函数模式第6.2.2讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之原型模式 第6.2.3讲笔记
- 【JavaScript学习】面向对象的程序设计(7):寄生式继承和寄生组合式继承
- JavaScript高级程序设计之面向对象的程序设计之创建对象之组合使用构造函数模式和原型模式 第6.2.4讲笔记
- JavaScript高级程序设计之面向对象的程序设计之创建对象之稳妥构造函数模式 第6.2.7讲笔记
- JavaScript高级程序设计笔记之面向对象
- JavaScript之继承(面向对象的程序设计)
- JavaScript高级程序设计之BOM之window 对象之窗口位置第8.1.3讲笔记
- 读书笔记——《程序员自我修养》——目标文件
- Android Studio
- Layout_weight这个属性
- DEFAULT_KEYS_SHORTCUT 功能的验证 及其 源码实现分析
- 多任务----同步
- JavaScript高级程序设计之面向对象的程序设计之继承之寄生式继承第6.3.5讲笔记
- Struts2 四、Struts2 处理流程
- [思路题] hdu 5491 The Next
- android中build过程
- 【python】matplotlib在windows10 和win7下安装
- 类中静态成员函数的使用
- 二维码扫描设置
- 选择排序小程序(c语言)
- NOIP2013华容道