原型继承面试题精讲

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 条评论
登录 后参与评论

相关文章

来自专栏鸿的学习笔记

分布式系统的一些阅读笔记

distributed systems high level:scalability, availability, performance, latency a...

751
来自专栏非典型技术宅

iOS实践:一步步实现星级评分1. 创建星星2. 优化3. 灵异事件

1544
来自专栏令仔很忙

令仔代码收藏系列(一)----Java压缩与解压缩

652
来自专栏DT乱“码”

接口测试类(http,post请求)参数 json格式

package RMI; import java.io.BufferedReader; import java.io.DataOutputStream; im...

2209
来自专栏ml

java版本的学生管理系统

1 import java.awt.BorderLayout; 2 import java.awt.Color; 3 import java.awt...

6376
来自专栏跟着阿笨一起玩NET

UML图示与代码对照

本文转载:http://www.cnblogs.com/iamlilinfeng/archive/2012/08/29/2662740.html

640
来自专栏技术之路

WPF MVVM实现TreeView

今天有点时间,做个小例子WPF MVVM 实现TreeView 只是一个思路大家可以自由扩展 文章最后给出了源码下载地址 图1 ?    图2     ? 模...

2329
来自专栏向治洪

获取手机短信内容

原理是通过,contentprovider获取系统短信数据库中的字段信息而达到获取内容目的 效果图如下: ? 具体代码如下: package com.inter...

2048
来自专栏JackieZheng

漫谈可视化Prefuse(四)---被玩坏的Prefuse API

  这个双12,别人都在抢红包、逛淘宝、上京东,我选择再续我的“漫谈可视化”系列(好了,不装了,其实是郎中羞涩。。。) 上篇《漫谈可视化Prefuse(三)-...

2425
来自专栏张泽旭的专栏

java编写Base64密码器

Base64加密算法,应用广泛,尤其是在电子邮件传输上,有很大的用途

931

扫码关注云+社区