zoukankan      html  css  js  c++  java
  • js 面向对象的三大特性:封装,继承、多态

    一:什么是封装?

    封装的定义:就是对象内部的变化对外界是透明的,不可见的。

    封装的场景:

     在写项目的过程中,有时候不同页面,会有相同的功能,我们还需要每个页面都写一遍吗?额,,,,其实也可以写的,只不过不嫌累 就i行,皮一下下~~

    例如:人员库项目中,部门管理中部门主管的模糊搜索,和新增部门的模糊搜索两个地方相同的功能,我们可不可以将模糊搜索的方法进行封装呢,然后,在不同页面点击触发的时候调用呢?这样我们是不是 就不必要 写大量重复的代码了,也会让我们的代码更加清晰。

    // 部门主管的模糊搜索
    remoteMethod(val) {
                this.query.keyWord = val;
                this.$store.dispatch('department/querySupervisorid', this.query)
    },  

    封装的好处:使用封装,可以达到代码的复用,使代码更加简洁,不会重复写很多的代码。

    二:什么是继承

    继承的定义:我们想要一个对象能够访问另一个对象的属性,同时,这个对象还能够添加自己新的属性或者覆盖可访问的另一个对象的属性,我们实现这个目标的方式叫做“继承”。

    实现继承的方式:

    function Foo(x, y) {
        this.x = x
        this.y = y
    }
    Foo.prototype.sayX = function() {
        console.log(this.x)
    } 
    Foo.prototype.sayY = function() {
        console.log(this.y)
    }
    
    function Bar(z) {
        this.z = z 
        this.x = 10
    }
    Bar.prototype = Object.create(Foo.prototype) // 注意这里,该方法时在FOO的原型上创建Bar的原型属性的空对象
    Bar.prototype.sayZ = function() {
        console.log(this.z)
    }
    Bar.prototype.constructor = Bar
    
    var o = new Bar(1)
    o.sayX() // 10
    o.sayZ() // 1

    这种继承方式被称为“构造函数继承”。

    三:什么是多态

     多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。本质上就是将”做什么“和”谁去做以及怎么做“分开,就是消除不同对象的耦合关系。

    重载:方法名相同,参数不同,表示不同的方法

    init() {
          this.test(100, 200)
          this.test(10)
        },
     test(num1, num2) {
          if(arguments.length===2) {
            console.log('111', num1, num2)
          } else {
            console.log('222', num1)
          }
    },

    重写:方法名相同,后者覆盖前者

    test1() {
          console.log('重写1')
     },
     test1() {
          console.log('重写2')
      },

    打印结果是: 重写2

  • 相关阅读:
    Day10 python基础---函数进阶
    Day9 python基础---函数初识
    Day8 python基础
    Day7 python基础
    Day6 python基础
    Day5 python基础
    Day4 python基础
    Day3 python基础
    TensorFlow学习笔记5-概率与信息论
    TensorFlow学习笔记6-数值计算基础
  • 原文地址:https://www.cnblogs.com/mn6364/p/10411729.html
Copyright © 2011-2022 走看看