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 世界中这种运行机制,这就是我们为什么要学习面向对象的原因。

学习面向对象的目的

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

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

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

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

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了