用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只是改变了 函数的作用域范围,函数并没有执行

最新文章

  1. Kotlin中变量不同于Java: var 对val(KAD 02)
  2. CSS使用position定位后导致元素浮动
  3. 修改server 2008远程桌面端口
  4. hdu 1241 Oil Deposits (一次dfs搞定有某有)
  5. SQLite常用点滴总结(转)
  6. 两种html幻灯片效果
  7. busybox reboot 无效
  8. Redis在Windows环境下搭建
  9. POJ 3130 How I Mathematician Wonder What You Are!(半平面交求多边形的核)
  10. ubuntu笔记1
  11. sharepoint One-Time Passwords (windows basic authentication)
  12. Java实现邮件代理发送
  13. config.json ajenti
  14. Java 最常用类(前1000名) 来自GitHub 3000个项目
  15. alpha冲刺总结随笔
  16. Unity C#笔记 容器类
  17. nginx server
  18. Python之字符编码与文件操作
  19. QtCreator 调试源码
  20. EF5.0中的跨数据库操作

热门文章

  1. IDL(Interactive Data Language——交互式数据语言)
  2. 学习RadonDB源码(二)
  3. fetch + async await 使用原生JS发送网络请求
  4. IntelliJ IDEA的自动提示貌似是区分大小写的,首字母小写的话,怎么都提示不出来。
  5. [Xcode 实际操作]八、网络与多线程-(14)使用网址会话对象URLSession将地理坐标转换为地名
  6. (十二)SpringBoot 设置定时任务
  7. 关于 js中的arguments 对象
  8. mongodb vs redis(Tokyo Tyrant转)
  9. ios开发static关键字的理解
  10. 自定义的cell上面有图片时,如果产生了重用,图片可能会错乱问题