前言
写本《JavaScript简餐》系列文章的目的是记录在阅读学习《JavaScript高级程序设计(第4版)》一书时出现的各个知识点。虽是对读书的笔记和总结,但是希望它轻量、简洁、犀利,不会引起阅读疲劳,可以在碎片化时间和闲暇之余轻巧地沐浴一下知识点。每篇文章只针对一个小部分进行讲解式的梳理,来达到个人复习总结和分享知识的目的。
一、什么是寄生式继承?
寄生式继承是与原型式继承比较接近的一种继承方式。其背后的思路类似于寄生构造函数和工厂模式:创建一个实现继承的函数,以某种方式增强对象,然后返回这个对象。老样子,先上代码:
二、使用实例
以下代码摘自《JavaScript高级程序设计(第4版)》
function createAnother(original) {
let clone = Object(original);
clone.sayHi = function() {
console.log('hi');
};
return clone;
}
在这段代码中,createAnother()函数接收一个参数,就是新对象的基准对象。这个对象original会被传给Object()函数,然会将返回的新对象赋值给clone。接着给clone对象添加一个新方法sayHi()。最后返回这个对象。
可以像下面这样使用以上寄生式继承:
let person = {
name: 'Lucy',
friends: ['Bob', 'Jack', 'Tim']
};
let anotherPerson = createAnother(person);
console.log(anotherPerson.name);
console.log(anotherPerson.friends);
anotherPerson.sayHi();
这个例子基于person对象返回了一个新对象。新返回的anotherPerson对象具有person的所有属性和方法,还有一个新方法sayHi()。可见,寄生式继承同样适合主要关注对象,而不在乎类型和构造函数的场景。Object()函数不是寄生式继承所必须的,任何可以返回新对象的函数都可以在这里使用。
三、总结
以上就是今天要讲的内容,简单地介绍了一下寄生构造函数的概念以及它的用法。下一篇我们来介绍一下寄生组合式继承。撒花~
|