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. 小米路由Mini刷Breed, 潘多拉和LEDE

    1. 下载breed,地址 http://breed.hackpascal.net/ 2. 下载小米Mini的开发板rom, 地址 http://www1.miwifi.com/miwifi_down ...

  2. 什么样的路由器有类似改hosts的功能

    2011-7-22 23:06:45 如题 就是像电脑上改hosts那样把某个域名强制解析到指定IP上 TT,DD和openwrt有没有这样的功能? ------------------------- ...

  3. [SQL Server]从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值。

    见下图sql, 使用dateadd()转换时报如题错误, 原因是数据库表中存入的数据格式不正确,  数据格式不正确,  数据格式不正确,  重要的事情讲3遍!! ca.batch_no的前8位必须是日 ...

  4. lucene之中文分词及其高亮显示

    参考:http://www.cnblogs.com/lirenzhujiu/p/5914174.html http://www.cnblogs.com/xing901022/p/3933675.htm ...

  5. MySQL -- 全文检索(自然语言全文检索)

    自然语言全文本检索缺省或者modifier被设置为in natural language mode,都是进行自然语言检索.对于表中的每一行,match()都会返回一个关联值. mysql> CR ...

  6. MySQL-慢查询日志

    慢查询日志功能默认不开启,其记录了执行时间超过参数long_query_time的值(默认是10),且访问的行数超过了参数min_examined_row_limit的值得SQL语句. mysql&g ...

  7. org.hibernate.exception.ConstraintViolationException: could not insert:

    org.hibernate.exception.ConstraintViolationException: could not insert: 报错原由于xxx.hbm.xml文件里的主键类型设置有问 ...

  8. xcode修改项目名后反复出现 clang error

    xcode修改项目名后反复出现 clang error,  提示 ld: file not found . 并且该错误并不是出现在项目编译阶段,而是项目的Tests 的link阶段, 同时提示 xct ...

  9. SQL Server 2008 R2占用内存越来越大两种解决方法

    SQL Server 2008 R2运行越久,占用内存会越来越大. 第一种:有了上边的分析结果,解决方法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使用任务计划定期执行下边 ...

  10. matlab入门笔记(二):矩阵和数组

    摘自<matlab从入门到精通>胡晓东 matlab最基本的数据结构就是矩阵,一个二维的.长方形形状的数据,可以用易于使用的矩阵形式来存储,这些数据可以是数字,字符.逻辑状态,甚至是mat ...