美文网首页
面向对象(一)

面向对象(一)

作者: 懂会悟 | 来源:发表于2020-09-07 08:16 被阅读0次

    1、传统的面向对象

    • 面向对象语言的一个标志就是类
    • 类是所有对象的统称,是更高意义上的一种抽象,对象是类的实例
    • 通过类可以创建任意多个具体的对象

    2、JS的面向对象

    • 在ES6之前JS没有类的概念,因此通常称JS为基于对象
    • ECMA中对对象的定义:无序属性的集合,属性值可以是基本值、对象、函数

    3、工厂模式

    工厂模式是一种非常常见的设计模式, 这种模式抽象了创建具体对象的过程,即用函数来封装以特定接口创建对象。

    // 创建工厂函数
    function createPerson(name, age, height) {
      var o = new Object()
      o.name = name
      o.age = age
      o.height = height
    
      o.sayHello = function () {
        console.log("Hello, My name is " + this.name)
      }
      return o
    }
    
    // 创建两个对象
    var person1 = createPerson("Tom", 28, 1.8)
    var person2 = createPerson("Jury", 38, 1.6)
    
    

    工厂模式无法解决对象类型的问题即创建的对象是Array还是Object,于是出现了构造函数模式


    4、构造函数模式

    构造函数可用来创建特定类型的对象,像Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中,当然也可自定义构造函数。构造函数首字母一般大写,调用构造函数时需要使用new关键字

    // 构造函数
    function Person(name, age, height) {
      this.name = name
      this.age = age
      this.height = height
      this.sayHello = function () {
        console.log(this.name)
      }
    }
    
    // 使用构造函数创建对象
    var person1 = new Person("Tom", 28, 1.8)
    var person2 = new Person("Jury", 35, 1.9)
    
    

    调用构造函数的执行过程

    • 创建一个新对象, 这个新的对象类型其实就是Person类型.
    • 将构造函数的作用域赋给新对象
    • 执行构造函数中的代码
    • 返回新对象, 但是是默认返回的, 不需要使用return语句

    使用构造函数的主要问题,就是每个方法都要在每个实例上重新创建一遍,这是完全没有必要的因此出现了原型链


    相关文章

      网友评论

          本文标题:面向对象(一)

          本文链接:https://www.haomeiwen.com/subject/xfonsktx.html