javascript基础拾遗(八)
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基础拾遗(八)的更多相关文章
- javascript基础拾遗(十三)
1.jQuery的特点 jQuery是目前非常流行的javascript库,理念是"Write Less,Do More" 1)消除浏览器差异 2)简洁的操作DOM方法 3)轻松实 ...
- javascript基础拾遗(十二)
1.javascript的单线程特性 在javascript中,所有的代码都是单线程的 因此所有的网络操作,浏览器事件,都必须是异步执行的,异步执行的逻辑是回调. function callback( ...
- javascript基础拾遗(十一)
1.DOM操作 1)查找 //根据id查找 document.getElementById() //根据html标签查找 documnet.getElementByTagName() //根据样式cl ...
- javascript基础拾遗(十)
1.支持ES6标准的浏览器 IE10+ Chrome Safari Firefox 移动端浏览器统一都支持 需要注意的是,不同浏览器对各个特性的支持也不一样 2.window对象 当前浏览器窗口对象 ...
- javascript基础拾遗(七)
1.对象的继承__proto__ var Language = { name: 'program', score: 8.0, popular: function () { return this.sc ...
- javascript基础拾遗(六)
1.Date内置对象 获取系统时间 var now = new Date() console.log(now) console.log(now.getDate()) console.log(now.g ...
- javascript基础拾遗(五)
1.什么是箭头函数 ES6引入的一种新的函数,类似匿名函数,x=>xx 箭头左端为函数参数,右端为函数体 相当于 function (x){ retutn xx } 2.箭头函数的特点 更简洁 ...
- javascript基础拾遗(二)
1.对象定义 定义属性 var language = { name:'javascript', score:9.0 }; console.log(language.name) console.log( ...
- javascript基础拾遗(一)
1.判断变量类型 var num = '123'; if(typeof num == 'number'){ alert('this is a number'); } else{ throw 'this ...
随机推荐
- Easyui + asp.net MVC 系列教程 第19-23 节 完成注销 登录限制过滤 添加用户
前面视频 文章地址 Easyui + asp.net MVC 系列教程 第09-17 节 完成登录 高清录制 Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 ...
- Dockerfile 构建前端nginx应用并用shell脚本实现jenkins自动构建
Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zh********h.cn RUN rm -f /etc/nginx/nginx.conf COPY n ...
- ios中非ARC项目中引用ARC文件
下图即可 选中工程->TARGETS->相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了.如何在未使用arc的工程中引入一个使用 ...
- c++ 多个线程读一个线程写同步
这种情况一般多个线程读是不需要加锁的.就在写的时候需要加锁. 那么要做的就是让不写的时候,读不受同步限制.让多线程自由的读. 这个时候就要用读写锁 boost已经有读写锁,而c++ 14才有读写锁. ...
- linux c学习笔记----线程创建与终止
进程原语 线程原语 描述 fork pthread_create 创建新的控制流 exit pthread_exit 从现有的控制流中退出 waitpid pthread_join 从控制流中得到退出 ...
- HDU 3951 Coin Game (简单博弈)
Coin Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- React(0.13) 定义一个使用动画
<!DOCTYPE html> <html> <head> <title>React JS</title> <script src=& ...
- win7系统总是安装不了net2.0的解决方法
一些网友询问说ghost win7系统总是安装不了net2.0怎么办呢?net2.0是什么?ATI显卡的控制中心 就需要在NET2.0的基础上.可是一些用户说win7系统总是安装不了net2.0如何解 ...
- SourceTree 代码库管理工具
1.SourceTree 简介 SourceTree 是拥有可视化界面的项目版本控制软件,适用于 git 项目管理,window.mac 均可用. 官网下载地址 SourceTree 其它下载地址 S ...
- Tensorflow中的run()函数
1 run()函数存在的意义 run()函数可以让代码变得更加简洁,在搭建神经网络(一)中,经历了数据集准备.前向传播过程设计.损失函数及反向传播过程设计等三个过程,形成计算网络,再通过会话tf.Se ...