面向对象编程OOP-2
2024-08-23 21:49:48
用ES6的方法 实现类的继承
//类的定义
class Animal {
//ES6中新型构造器
constructor(name,age) {
this.name = name;
this.age=age;
}
//实例方法
sayName() {
console.log(this.name +' is ' + this.age);
}
}
//类的继承
class Programmer extends Animal {
constructor(name,age) {
//直接调用父类构造器进行初始化
super(name,age);
}
program() {
console.log("I'm coding...");
}
}
//测试我们的类
var animal=new Animal('dummy','20'),
wayou=new Programmer('femal','65');
animal.sayName();//输出 ‘My name is dummy'
wayou.sayName();//输出 ‘My name is wayou'
wayou.program();//输出 ‘I'm coding...'
2. 原型继承 和类式继承结合,比较典型
function AnimalTest(name,age) {
this.name=name;
this.age=age;
this.sayName=function () { }
} function ProgrammerTest(name,age) {
AnimalTest.apply(this,arguments)
}
ProgrammerTest.prototype=Object.create(AnimalTest.prototype);
ProgrammerTest.prototype.constructor=ProgrammerTest;
3. 介绍一下 bind与call,apply的区别
var obj = {name:'JSLite.io'};
/**
* 给document添加click事件监听,并绑定EventClick函数
* 通过bind方法设置EventClick的this为obj,并传递参数p1,p2
*/
document.addEventListener('click',EventClick.bind(obj,'p1','p2'),false);
//当点击网页时触发并执行
function EventClick(a,b){
console.log(
this.name,
a,
b
)
}
当点击document文档的时候,在浏览器console里可以看到 打印出: JSLite.io p1 p2
但是如果我们修改下代码,把EventClick.bind(obj,'p1','p2')部分改成EventClick.call(obj,'p1','p2') 会发生什么呢? 是的,你不需要点击任何东东,马上就会打印
JSLite.io p1 p2 ,就是说函数立马执行了,用bind只是改变了 函数的作用域范围,函数并没有执行
最新文章
- Kotlin中变量不同于Java: var 对val(KAD 02)
- CSS使用position定位后导致元素浮动
- 修改server 2008远程桌面端口
- hdu 1241 Oil Deposits (一次dfs搞定有某有)
- SQLite常用点滴总结(转)
- 两种html幻灯片效果
- busybox reboot 无效
- Redis在Windows环境下搭建
- POJ 3130 How I Mathematician Wonder What You Are!(半平面交求多边形的核)
- ubuntu笔记1
- sharepoint One-Time Passwords (windows basic authentication)
- Java实现邮件代理发送
- config.json ajenti
- Java 最常用类(前1000名) 来自GitHub 3000个项目
- alpha冲刺总结随笔
- Unity C#笔记 容器类
- nginx server
- Python之字符编码与文件操作
- QtCreator 调试源码
- EF5.0中的跨数据库操作
热门文章
- IDL(Interactive Data Language——交互式数据语言)
- 学习RadonDB源码(二)
- fetch + async await 使用原生JS发送网络请求
- IntelliJ IDEA的自动提示貌似是区分大小写的,首字母小写的话,怎么都提示不出来。
- [Xcode 实际操作]八、网络与多线程-(14)使用网址会话对象URLSession将地理坐标转换为地名
- (十二)SpringBoot 设置定时任务
- 关于 js中的arguments 对象
- mongodb vs redis(Tokyo Tyrant转)
- ios开发static关键字的理解
- 自定义的cell上面有图片时,如果产生了重用,图片可能会错乱问题