ES6 class类的创建与继承

 1         //#region  ES5和ES6类对象的声明对比
 2         //ES5类对象的写法是
 3         // function Phone(brand, price) {
 4         //     this.brand = brand
 5         //     this.price = price
 6         // }
 7         // 给Phone添加一个方法 callMethod()
 8         // Phone.prototype.callMethod=function(){
 9         //     console.log(this.brand+':'+this.price);
10         // }
11 
12         // 实例化对象并调用方法
13         // let huawei=new Phone('华为','4999')
14         // huawei.callMethod()
15 
16         //ES6新增了class类的写法
17         // class mPhone{
18         // 构造方法,名字固定
19         // constructor(mbrand,mprice){
20         // this.mbrand=mbrand
21         // this.mprice=mprice
22         // }
23         // 
24         // mCallMethod(){
25         // console.log('class类中的方法')
26         // }
27         // }
28 
29         // let mphone=new mPhone('huawei','5000')
30         // mphone.mCallMethod() // 输出:class类中的方法
31         //#endregion
32 
33         // ES5类对象的继承
34         // function Phone(brand, price) {
35         //     this.brand = brand;
36         //     this.price = price;
37         // }
38 
39         // Phone.prototype.call = function () {
40         //     console.log('打电话');
41         // }
42 
43         // function SmartPhone(brand, price, color) {
44         //     Phone.call(this, brand, price) // 利用call方法将Phone对象指向SmartPhone的实例对象,从而初始化SmartPhone实例对象的值
45         //     this.color = color
46         // }
47 
48         // 设置子级构造函数的原型
49         // SmartPhone.prototype=new Phone;// 继承Phone的方法
50 
51         // SmartPhone.prototype.playGame = function () {
52         //     console.log('打游戏');
53         // }
54 
55         // let xiaomi = new SmartPhone('小米', '1999', '5.5inch')
56         // console.log(xiaomi);
57 
58         // ES6类的继承
59         class Phone {
60             // 注意class中的构造方法不是必须的,如果没有也可以
61             constructor(brand, price) {
62                 this.brand = brand;
63                 this.price = price
64             }
65 
66             call() {
67                 console.log('打电话!!');
68             }
69         }
70 
71         // extends 关键字表示继承自哪个类
72         class SmartPhone extends Phone {
73             // 构造方法
74             constructor(brand, price, color) {
75                 // 调用父类的构造方法传参
76                 super(brand, price) // super指代父类的构造方法constructor
77                 this.color = color
78             }
79 
80             playGame() {
81                 console.log('打游戏!!!');
82             }
83 
84             // 定义一个父类的同名方法实现对父类方法的重写(注:子类中不能调用父类方法)
85             // call(){
86             //     console.log('打视频电话!');
87             // }
88         }
89 
90         let chuizi = new SmartPhone('锤子', '2999', '黑色')
91         chuizi.call() // 打电话!!

 

相关文章

原文连接:https://www.cnblogs.com/dupd/p/5951311.htmlES6...
以为Es6,javascript第一次支持了module。ES6的模块化分为导...
视频讲解关于异步处理,ES5的回调使我们陷入地狱,ES6的Prom...
TypeScript什么是TypeScript?TypeScript是由微软开发的一款开...
export class AppComponent { title = 'Tour of heroes...
用 async/await 来处理异步昨天看了一篇vue的教程,作者用as...