面向对象和面向过程 ES6-class类

面向对象和面向过程

    // 从面向过程,改造成面向对象
    // 1,获取的数据,标签对象,要以参数的形式,定义给构造函数和实例化对象
    //   获取标签对象时,一般获取父级,传参父级,在构造函数中,通过父级标签,获取子级标签独享
    // 2,必须非常非常非常注意,this的指向,一般在面向对象中,都是使用箭头函数
    //   如果万一不能清楚地知道this指向,可以先输出 this
    // 3,其他步骤和思路基本相同,没有区别

    // 总结:
    // 1,改不改箭头函数,看内部是否需要 指向实例化对象的this 
    //   如果需要,可以改箭头函数,或者是提前存储this指向
    //   如果不许需要,改不改箭头函数都行
    //   一切以实现程序为最终需求,程序能执行就可以
    // 2,之前面向过程的是参数,数据等,
    //   现在是面向对象编程,要在对象的属性中,定义参数数据
    //   也就是通过 构造函数 this.属性 = 属性值 语法来定义需要获取的参数数据
    // 3,定义在构造函数方法中的一些变量数据,并不是定义在实例化对象中的属性
    //   没有必须写成 this.属性 = 属性值 的形式
    //   只要写成普通的变量定义即可 
    //   使用时,也是直接使用变量,不需要添加this
    // 4,在构造函数的方法中,调用其他的函数方法
    //   语法形式 应该是 实例化对象.函数方法名称()
    //   在构造函数中,使用this来指向实例化对象,写成 this.函数方法名称()

ES6 class类

 <script>
    // ES5的构造函数有一些问题
    // 最大的问题,就是定义 prototype 是在函数之外定义的
    // 调用构造函数,生成实例化对象,一定要在定义 prototype 之后
    // 否则生成的实例化对象,只有属性没有函数方法

    // ES6中,新增语法形式 class 类
    // 是一种新的定义构造函数的语法
    // 作用和原理与ES5语法完全相同
    // 只是语法格式和书写方式,不同
   
   
   
    // 如果先调用构造函数,只有属性没有方法
    // 因为定义方法的步骤还没执行呢
    const obj1 = new Fun('张三');
    // obj1.f()  // 执行结果是报错的

    function Fun(name){
        this.name = name;
    }
    // 在定义函数外,定义prototype
    Fun.prototype.f = function(){
        console.log(this.name)
    }


    const obj2 = new Fun('李四');
    obj2.f();

</script>
<script>
    // ES5和ES6语法的对比

    // 1,ES5语法
    function Fun1(name,age){
        this.name  = name;
        this.age = age;
    }
    Fun1.prototype.f1 = function(){
        console.log(this.name , this.age);
    }

    

    // 2,ES6语法  class
    class Fun2{
        constructor(name,age){
            this.name = name;
            this.age = age;
        }

        f2(){
            console.log(this.name , this.age);
        }
    }

    const obj1 = new Fun1('张三',18);
    const obj2 = new Fun2('李四',20);

    console.log(obj1);
    console.log(obj2);
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值