阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 面向对象的理解

      什么是面向对象

      可以简单的认为,我们处在上帝视角,我们是上帝,我们要创造人类,动物类,植物类,鱼类,天气类等等的事情。

      我们创造的"人类"就属于"类",某个具体的人,比如"张三",他就属于具体的人,也叫实例,这种使用归类的形容和处理问题的思路就叫面向对象。

      我们如果用心留意,会发现很多语言,喜欢第一件事情输出"hello world",因为这种行为象征着开发者创造了一个全新的东西,这个东西可以向世界打招呼,那么此时的开发者是不是就像造物主一样的存在?

      面向对象的核心,就是掌握 实例/ / 对象

      生活中的理解

      • 实例:类中具体的事物,单个个体;
        • 张三,李四,
        • 松树 A,松树 B
        • 公鸡 A, 公鸡 B, 公鸡 C
      • 类:某些相同特征的个体归类
        • 人类
        • 动物类
        • 植物类
      • 对象:所有的类都是属于对象
        • 万物皆对象,JS 世界的基础

      注意:众多相同特征的实例,组成,众多类和实例组成对象的概念。

      JS 世界中的理解

      let ary1= [];
      let ary2= [];
      
      let str1= "";
      let str2= "";
      
      • ary1ary2都是实例,他们都属于Array类(注意 Array,首字母大写)
      • str1str2都是实例,他们都属于String类(注意 String,首字母大写)

      下图是 JS 中的内置类和基类;

      - Object
          - String
          - Number
          - Bigint
          - Boolean
          - Null
          - Undefined
          - Array
          - RegExp
          - Function
          - ....
      

      Object是 JS 中的基类,剩下的所有内置类,都是基与Object类之上的;

      可以通过下面代码来查看内之类和 Object 的关系;

      console.dir(Number)
      console.dir(String)
      console.dir(Array)
      

      最终都会找到

      __proto__:
          constructor: ƒ Object()
          hasOwnProperty: ƒ hasOwnProperty()
          isPrototypeOf: ƒ isPrototypeOf()
          propertyIsEnumerable: ƒ propertyIsEnumerable()
          toLocaleString: ƒ toLocaleString()
          toString: ƒ toString()
          valueOf: ƒ valueOf()
          __defineGetter__: ƒ __defineGetter__()
          __defineSetter__: ƒ __defineSetter__()
          __lookupGetter__: ƒ __lookupGetter__()
          __lookupSetter__: ƒ __lookupSetter__()
          get __proto__: ƒ __proto__()
          set __proto__: ƒ __proto__()
      

      同样的,我们获取 DOM 的结果,也是这样的原理,在控制台查看divs也会发现,指向Object基类;

      let divs = document.querySelectorAll('div');
      

      这些类和实例就是 JS 中的核心,我们如果想深刻理解和学习 JS,就不可避免的需要了解 JS 世界中这种运行机制,这就是我们为什么要学习面向对象的原因。

      学习面向对象的目的

      我们学习面向对象的目的:就是学习如何当好一名上帝

      那些创建事物的不同方式就是我们需要学习的技巧;

      上面是安邦自己的理解,描述的并不全面和系统,但是可以让你迅速知道面向对象的真正精髓!你最开始知道这些就好了,这些才是面向对象的核心思想

      我们可以先看下维基百科上对面向对象的概述

      目录
      目录