5、面向过程与面向对象、ES6与ES5的面向对象语法

简介: 5、面向过程与面向对象、ES6与ES5的面向对象语法

1、面向过程


  • 设置一个内容管理系统:考虑各个功能,然后每个功能都编写成函数,最后依次调用函数就实现了整个系统。


40b11833f0fb4e18a12c789251723602.png

2、面向对象


  • 设置一个内容管理系统,把系统抽象成一个个类,完成类的编写之后,系统就随之完成了(比如像Java这种纯面向对象语言开发过程就是在写类)

815f25781a5341b39c111c8fd92ecc7d.png

3、ES6的面向对象语法


顺序
1、创建类 class User{}
2、定义构造函数 constructor() {}
3、定义方法 login(){}
4、实例化对象 new User()
5、继承类 class Admin extends User {}
6、继承类属性 super(username, password)


<script>
    // 1、创建类
    class User {
      // 2、构造函数
      constructor(username, password) {
        this.username = username;
        this.password = password;
      }
      // 3、方法
      login() {
        if (this.username === "jasmine" && this.password === "123456") {
          console.log("登陆成功");
        } else {
          console.log("登陆失败");
        }
      }
    }
    // 4、new:对象实例化
    let user = new User("jasmine", "123456");
    console.log(user);    // 输出结果:User {username: 'jasmine', password: '123456'}
    user.login();     // 输出结果:登陆成功
    // 5、extends:继承User的属性与方法
    class Admin extends User {
      // 构造函数
      constructor(username, password, id) {
        // 6、继承属性
        super(username, password);
        // admin独有
        this.id = id;
      }
      // 方法
      crudUser() {
        console.log("对用户进行操作");
      }
    }
    // 实例对象
    let admin = new Admin("jasmine_qiqi", "123456789");
    console.log(admin);   // 输出结果:Admin {username: 'jasmine_qiqi', password: '123456789'}
    admin.login();      // 输出结果:登陆失败
    admin.crudUser();   // 输出结果:对用户进行操作
  </script>

4、ES6的面向对象总结


大多数前端工程师,在工作过程中,都是用面向过程的方式去解决问题。因为面向过程的代码更简洁,解决问题的方式更直接。

面向对象的程序设计会大幅度提升代码量,但如果我们开发的系统经常会需要变量,功能扩展,或是修复BUG,那么面向对象的程序有很大的优势。

也就是说,如果问题规模上升,面向对象对于系统的可扩展性和可维护性优势是非常突出的。

总结:面对过程(小规模),面向对象(大规模)


5、ES5的面向对象语法

image.png

  <script>
    // 1、创建构造函数,相当于类
    function User(username, password) {
      this.username = username;
      this.password = password;
      // 2、创建方法
      this.login = function () {
        if (this.username === "jasmine" && this.password === "123456") {
          console.log("登陆成功");
        } else {
          console.log("登陆失败");
        }
      }
    }
    // 3、new:实例化对象
    var user = new User("jasmine", "123456");
    console.log(user);    // 输出结果:User {username: 'jasmine', password: '123456'}
    user.login();     // 输出结果:登陆成功
    function Admin(username, password) {
      this.username = username;
      this.password = password;
    }
    // 4、通过构造函数的prototype属性实现继承(函数所特有的)
    Admin.prototype = new User();
    // 5、通过对象的.__proto__属性实现继承(共有)
    // Admin.__proto__ = new User();
    var admin = new Admin("jasmine", "123456");
    console.log(admin);   // 输出结果:Admin {username: 'jasmine', password: '123456'}
    admin.login();      // 输出结果:登陆成功
  </script>


目录
打赏
0
0
0
0
2
分享
相关文章
|
10月前
|
创建一个可缓存线程池
创建一个可缓存线程池
63 4
openpose的一些个人理解
一直都是在做一些目标检测的研究工作,近期开始看一些有关姿态检测的内容,其中最经典的就是openpose这个框架,后面很多动作识别、姿态检测也大多是在该网络上进行改进,比如Real-time 2D Multi-Person Pose Estimation on CPU 这篇论文,在原OpenPose基础上进行了轻量处理,我也用这代码跑了一下,效果也不错。
677 0
openpose的一些个人理解
Spring Boot Endpoint监控端点扩展
什么是端点? 端点就是SpringBoot通过web或者jmx的方式向外部暴露应用的信息,或者上下文的信息。SpringCloud-Admin就是根据此技术来进行实现的。他们用到的技术就是@Endpoint,而不是通过自己@GetMapping之类进行实现的。下面小编就带大家一起来学习端点的使用。学会本文后在利用前面我们讲过的autoconfigure的自动化配置后,你就可以开发更高级的SpringBoot应用(非业务系统)。本教程将带你从业务系统开发者转变为研发系统开发者。
322 0
#leetcode 637二叉树的层平均值
#leetcode 637二叉树的层平均值
81 0
#leetcode 637二叉树的层平均值
Go -- 方法中何时使用值传递何时使用指针共享
Go -- 方法中何时使用值传递何时使用指针共享
基于Tablestore的共享汽车管理平台
前言 目前出行市场主要分为传统和新兴两个阵营:私家车、公共交通、出租车和长租车为传统出行提供服务,共享单车、网约车以及分时租赁共享汽车则是最近几年兴起的出行方式。_图1 出行方式分析_出行者往往是在成本和出行便捷之间权衡选择出行方式。
4962 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问