原型继承面试题精讲

HTML5学堂:最近看到一道考察面向对象、原型继承的面试题,关于一只小狗狗和一只“精力旺盛”的小狗狗的故事~今天就来讲讲这个吧。

题目要求

有一条可爱的小狗(名字叫“小狗狗”),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫(yelp)。

另一只小狗精力很旺盛(名字叫做“精力旺盛的狗狗”),每隔5秒叫唤(yelp)一声(wow)。

使用面向对象的混合模式实现小狗的创建

function Dog() {
    this.name = '小狗狗';
    this.wow = 'wow';
}
Dog.prototype.yelp = function() {
    console.log(this.wow);
}

精力旺盛的狗狗继承狗狗的基本特点

使用call实现属性的继承,使用for-in循环实现功能/方法的继承

function MadDog() {
    Dog.call(this);
    this.name = '精力旺盛的狗狗';
}
for (var i in Dog.prototype) {
    MadDog.prototype[i] = Dog.prototype[i];
};

如上代码还进行了狗狗name这个属性的重写

实现方法的重写

MadDog.prototype.yelp = function () {
    var _this = this;
    setInterval(function(){
        console.log(_this.wow);
    }, 5000);
}

最后,奉上完整版代码

/*
* author: HTML5学堂
* http://www.h5course.com
*/
function Dog() {
    this.name = '小狗狗';
    this.wow = 'wow';
}
Dog.prototype.yelp = function() {
    console.log(this.wow);
}
 
function MadDog() {
    Dog.call(this);
    this.name = '精力旺盛的狗狗';
}
for (var i in Dog.prototype) {
    MadDog.prototype[i] = Dog.prototype[i];
};
MadDog.prototype.yelp = function () {
    var _this = this;
    setInterval(function(){
        console.log(_this.wow);
    }, 5000);
}
var dog = new MadDog();
dog.yelp();

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2016-04-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Scott_Mr 个人专栏

RxSwift 系列(六) -- Mathematical and Aggregate Operators

35312
来自专栏mukekeheart的iOS之旅

No.016 3Sum Closest

16. 3Sum Closest Total Accepted: 86565 Total Submissions: 291260 Difficulty: Med...

2248
来自专栏智能大石头

C++返回值优化RVO

返回值优化,是一种属于编译器的技术,它通过转换源代码和对象的创建来加快源代码的执行速度。RVO = return value optimization。 测试...

2119
来自专栏wym

HDU 6114 Chess

 题目:http://acm.hdu.edu.cn/showproblem.php?pid=6114

552
来自专栏Ldpe2G的个人博客

Graphviz4S ---- 在Scala中使用DOT语言绘图的开源工具

之前需要在Scala中用到类似python的graphviz库的功能,用来在Mxnet中可视化网络结构,

1274
来自专栏kevindroid

leetcode538 Convert BST to Greater Tree

1284
来自专栏WindCoder

Java设计模式学习笔记—建造者模式

文章最后“Java设计模式笔记示例代码整合”为本系列代码整合,所有代码均为个人手打并运行测试,不定期更新。本节内容位于其Builder包(package)中。

562
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

5.2.3 二维导热算例-整体架构

740
来自专栏Ldpe2G的个人博客

Graphviz4S ---- 在Scala中使用DOT语言绘图的开源工具

1216
来自专栏机器人网

ABB机器人编程方式

1、指令表IL   指令表(IL)由一系列指令组成。每条指令都由一个新行开始,包含一个操作符以及和操作符类型相关的一个或多个操作数,并用逗号分开。在指令前可以有...

2706

扫描关注云+社区