JS:面向对象

本文详细介绍了ES6中的类和对象概念,包括如何创建类、构造函数的使用、类方法添加,以及类的继承机制,重点讲解了`extends`、`super`关键字和注意事项。通过实例演示,理解面向对象编程在ES6中的应用和实践。
摘要由CSDN通过智能技术生成

目录

1.面向对象编程介绍

2. ES6的类和对象

2.1 对象

2.2 类

2.2.1 创建类

2.2.2 constructor 构造函数

2.2.3 类添加方法

3.类的继承

3.1 继承

3.1.1 extends

3.2 super 关键字

3.3 类的两注意


1.面向对象编程介绍

  • 面向对象就是把事务分解为一个个对象,然后对象之间分工与合作
  • 特性:封装性,继承性,多态性
  • 优点:易维护,易复用,让系统灵活
  • 特点:抽象对象的共用属性和行为组织成一个类;对类进行实例化,获取类的对象

2. ES6的类和对象

2.1 对象

对象是一组无序的相关属性和方法的集合,所有的事物都是对象,是具体的事物

2.2 类

class 关键字声明一个类,用类来实例化对象

抽象了对象的公共部分,它泛指了某一大类

2.2.1 创建类

class name { }

创建实例:(必须用new实例化对象

var x = new name ();

2.2.2 constructor 构造函数

是类用于传递参数,返回实例对象,会自动调用这个函数

 注意:类名要首字母大写建议

    <script>
        class Star {
            constructor(uname) {
                this.uname = uname;
            }
        }
        var ls = new star('lisa');
        console.log(ls.uname); //lisa
    </script>

2.2.3 类添加方法

类里面的函数不需要加function

多个函数间用逗号分隔

class star {
            constructor(uname) {
                this.uname = uname;
            }
            // 添加方法
            sing(){
                console.log('abc');
            }
        }

3.类的继承

3.1 继承

子类可以继承父类的方法和属性

3.1.1 extends

语法:子类 extends 父类 { };  如 Son extens Don { };

    <script>
        class Dad {
            constructor() {

            }
            money() {
                console.log(100);
            }
        }
        class Son extends Dad {

        }
        var son = new Son();
        son.money(); //100
    </script>

3.2 super 关键字

用于访问和调用对象父类上的函数。可以调用父类的构造函数和其他函数

  • 如果父类和子类都有同一个方法,子类输出时会执行子类的(把父类的方法隐藏了)
  • 继承的属性或者方法中的查找原则:就近原则
  • 在构造函数中使用super,必须放在this 前(必须先调用父类的构造函数,在使用子类的构造方法
    <script>
        class Dad {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                console.log(this.x + this.y);
            }

        }
        class Son extends Dad {
            constructor(x, y) {
                super(x, y) //必须写在this前
                this.x = x;
                this.y = y;
            }
            sub() {
                console.log(this.x - this.y);
            }
        }

        var son = new Son(9, 4); //5 13
    </script>

3.3 类的两注意

  1. ES6中类没有提升,必须先定义类,在实例化对象
  2. 类里面共有的属性和方法一定要添加this使用
  3. 类的指向问题
        // 类的指向问题
        class Dad {
            constructor(x, y) {
                // constructor的this指的是 创建的star 对象
                this.x = x;
                this.y = y;
            }
            sum() {
                // 函数里面的this指向调用者
                console.log(this.x + this.y);
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值