1.原型继承

如何让一个对象继承另一个对象?

function Language(name){
this.name = name
this.score = 8.0
}
Language.prototype.popular = function () {
return this.score/10*100 + '%'
}
function FastLanguage() {
this.speed = '0.01'
}

FastLanguage是Language的子类,如何让FastLanguage拥有Language的属性呢?

由继承规则可知,需要让FastLanguage的原型指向Language的原型,即:

new FastLanguage()---->FastLanguage.prototype---->Language.prototype---->Object.prototype---->null

如何让FastLanguage的原型指向Language的原型呢?

需要借助一个中间对象Temp,让FastLanguage.prototype指向新的Temp对象,Temp的原型指向Language的原型即可。

function Language(name){
this.name = name
this.score = 8.0
}
Language.prototype.popular = function () {
return this.score/10*100 + '%'
}
function FastLanguage(name) {
// this表示FastLanguage对象,绑定this.name的值
Language.call(this,name)
this.speed = '0.01'
}
function F() { }
F.prototype = Language.prototype
FastLanguage.prototype = new F()
// 需要将FastLanguage原型对应的constructor恢复为以前
FastLanguage.prototype.constructor = FastLanguage
fastLanguage = new FastLanguage('C')
console.log(fastLanguage.popular())

运行结果: 80%

2.原型继承小结

1)使用call调用父类构造函数,绑定到当前对象的属性值

2)使用中间对象Temp实现原型链的继承

javascript基础拾遗(八)的更多相关文章

  1. javascript基础拾遗(十三)

    1.jQuery的特点 jQuery是目前非常流行的javascript库,理念是"Write Less,Do More" 1)消除浏览器差异 2)简洁的操作DOM方法 3)轻松实 ...

  2. javascript基础拾遗(十二)

    1.javascript的单线程特性 在javascript中,所有的代码都是单线程的 因此所有的网络操作,浏览器事件,都必须是异步执行的,异步执行的逻辑是回调. function callback( ...

  3. javascript基础拾遗(十一)

    1.DOM操作 1)查找 //根据id查找 document.getElementById() //根据html标签查找 documnet.getElementByTagName() //根据样式cl ...

  4. javascript基础拾遗(十)

    1.支持ES6标准的浏览器 IE10+ Chrome Safari Firefox 移动端浏览器统一都支持 需要注意的是,不同浏览器对各个特性的支持也不一样 2.window对象 当前浏览器窗口对象 ...

  5. javascript基础拾遗(七)

    1.对象的继承__proto__ var Language = { name: 'program', score: 8.0, popular: function () { return this.sc ...

  6. javascript基础拾遗(六)

    1.Date内置对象 获取系统时间 var now = new Date() console.log(now) console.log(now.getDate()) console.log(now.g ...

  7. javascript基础拾遗(五)

    1.什么是箭头函数 ES6引入的一种新的函数,类似匿名函数,x=>xx 箭头左端为函数参数,右端为函数体 相当于 function (x){ retutn xx } 2.箭头函数的特点 更简洁 ...

  8. javascript基础拾遗(二)

    1.对象定义 定义属性 var language = { name:'javascript', score:9.0 }; console.log(language.name) console.log( ...

  9. javascript基础拾遗(一)

    1.判断变量类型 var num = '123'; if(typeof num == 'number'){ alert('this is a number'); } else{ throw 'this ...

随机推荐

  1. 通过#define连接字符串的特殊方法[转]

    //在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. #define Conn(x,y)    x##y   //连接 ...

  2. Linux安装配置maven以及搭建nexus私服(编写启动脚本)

    2011年07月12日16:32  下面介绍在Linux操作系统下安装配置maven和搭建nexus私服. 一.安装前的准备 下载 jdk http://www.oracle.com/technetw ...

  3. quine

    发鸠之山,其上多柘木,有鸟焉,其状如乌,文首,白喙,赤足,名曰:"精卫",其鸣自詨(音同"笑").是炎帝之少女,名曰女娃.女娃游于东海,溺而不返,故为精卫,常衔 ...

  4. JAVA操作mysql

    所需jar包:mysql-connector-java.jar 代码: import java.sql.*; import java.util.ArrayList; import java.util. ...

  5. errno.h - C Error Codes in Linux

    All the Linux/C error codes are listed below. I occasionally google C error codes, but always end up ...

  6. Linux下出现command not found的解决办法

    不管是普通用户还是ROOT用户,修改~/.bash_profile文件,在文件最后加上:export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/u ...

  7. windows 7 开启无线wifi

    Windows 7 开启无线wifi步骤:1.选择“开始”-“运行”命令,在运行命令栏里输入“CMD”打开管理员: 2.在界面里输入以下命令:netsh wlan set hostednetwork ...

  8. iOS 不支持 PWA,那又怎么样?

    原文链接http://www.zcfy.cc/article/ios-doesn-8217-t-support-progressive-web-apps-so-what-cloud-four-3400 ...

  9. 31天重构学习笔记(java版本)

    准备下周分享会的内容,无意间看到.net版本的重构31天,花了两个小时看了下,可以看成是Martin Fowler<重构>的精简版 原文地址:http://www.lostechies.c ...

  10. 利用 PowerShell 分析SharePoint WebApplication 体系结构

    之前一篇文章<两张图看清SharePoint 2013 Farm 逻辑体系结构>谈到Web Application,Content Database,Site Collection的关系. ...