ES5:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <Meta charset="utf-8"> <title></title> <script> //定义构造函数 function Person(name, age){ this.name=name; this.age=age; } //在原型 prototype 上定义方法 Person.prototype.show=function (){ alert(this.name); alert(this.age); }; //用到类的时候,实例化 new 一个 let p = new Person("blue",18); p.show(); //ES5的继承------------------------------------------- //定义子类的构造函数 function Worker(name, age, job){ Person.call(this, name, age); this.job=job; } Worker.prototype=new Person(); //继承父类的 prototype //继承父类的prototype后,自身的 constructor 会乱掉,需要还原一下 Worker.prototype.constructor=Worker; //添加 Worker 自己的方法 Worker.prototype.showJob=function (){ alert(this.job); }; let w=new Worker('blue', 18, '打杂的'); w.show(); w.showJob(); </script> </head> <body> </body> </html>
ES6:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <Meta charset="utf-8"> <title></title> <script> //ES6的面向对象 ,class 用来专门声明类的 class Person{ constructor(name, age){ // constructor 构造函数 this.name=name; this.age=age; } show(){ // 直接在class里面写方法 alert(this.name); alert(this.age); } } //ES6的继承-------------------------------------- class Worker extends Person{ // 告诉系统 Worker 继承于 Person constructor(name, age, job){ // 子类的constructor,参数比父类只多不少 super(name, age); //调父类的构造函数,用super关键字把需要的父类的参数传过来,需要什么就传什么 this.job=job; //子类自己的参数 } showJob(){ //加上自己需要的,子类的方法 alert(this.job); } } //类的使用方法和 ES5 没什么不同,实例化 let w=new Worker('blue', 18, '打杂的'); w.show(); //调父类的方法 w.showJob(); //调自己的方法 /* */ </script> </head> <body> </body> </html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。