浅谈javascript面向对象和类

JavaScript的面向对象,你真的懂了吗?是否一定需要使用”类“来编程? 前言 提到JavaScript,就不得不提那强大的原型链(prototype)。但是近些年的JSers,我想真正在使用原型进行编程的应该很少。为什么?因为JavaScript处处是对象,面向对象设计似乎能与它天然结合。各大流行库例如React,都包含着面向对象设计的思想。 自从ES6 ‘class’ 语法糖的出现,以及Typescript的一些增强语法(例如public, private关键字),更是为我们蒙了一层面纱,今天就是要扒开这层面纱,和大家聊聊JavaScript的面向对象设计,以及另外一种可替代 阅读详情

面向对象:

面向对象是为了帮助我们更好的进行编程,面向过程是分析解决问题的所需步骤然后用函数把这些步骤一步一步的实现,但是当问题的过程非常复杂的时候,面向过程就会非常麻烦 所以我们要将过程分解为不同的对象进行处理,目的是为了让一个对象处理一种行为这样相同或者相似的行为就可以使用一个函数来处理。

面向对象的三大特性:

封装 继承 多态

  • 封装:

    • 将数据的操作细节隐藏起来,只暴露对外的接口,外界调用不需要(也不可能)知道细节,就能通过对外提供的接口来访问该对象,同时也保证了外界无法任意更改对象内部的数据
  • 继承:

    • 子类继承父类,子类除了拥有父类的所有特性外,还有一些更具体的特性
  • 多态:

    • 由继承而产生了相关不同的类,对同一方法可以有不同的响应,比如cat,dog都继承自animal 但是分别实现了自己的eat方法。此时针对某一实例,不需要知道是cat还是dog直接调用eat方法。

面向切面:

如图理解:
在这里插入图片描述

类

ES7中无需在constructor中定义属性,可以直接在类里面定义。

  • 具有同种属性的对象称为类, 这是为了让我们更容易的管理程序, 因为类可以共享,就好像我们班级70人我们给他们每个人都指派好任务可能一晚上都讲不完,但是我们说今天晚上咱们班的男生做什么女生做什么又或者听懂了的做什么没听懂的做什么就能很简单的解决这个任务

  • 之所以将类分成父类 子类 超类 基类 我认为也是为了方便我们的编程而已,核心并没有区别,不论是基类还是超类 都是为了我们继承在接下来编写类似的内容方便修改

属性:属性又分成2类,静态属性和实例属性.

方法(属性):那么类有了我们就需要来告诉这个类你需要做什么,就是通过方法,方法是什么就是属性的组合,简单的说用属性来定义类的行为就叫做方法.在js中关注类的功能,弱化对象的类型.

静态方法和实例方法

用static定义的方法都是静态方法 静态方法的特点:
虽然可以在静态方法中使用this,但是我们禁止在静态方法中使用this静态方法中不允许使用this,意味着不允许调用实例化对象
一切实例化方法和属性都不允许调用只能调用静态属性 static d=10; 属性相当于局部变量
本质上是类属性类方法

实例方法:
用new的方法创建,实例方法要通过先定义一个引用变量,指向构造函数定义的新对象。

这里有个constructor可能比较难理解吧?

js中基本上每一个函数都拥有一个prototype属性,这个属性的值是一个对象,这个对象包含唯一一个不可枚举的属性constructor,constructor属性的值是一个函数对象;

var o=new F();

o.constructor===F //true o的constructor就是F 我们就可以使用constructor来传递接收F中的参数

上面不重要,我们只要知道constructor可以帮助我们传参

class Arrays{//这个只是帮助理解
length=0;
data={};
a=0;
b=0;
static d=10;
constructor(_a=0,_b=0){ //constructor这个就是类名
this.a=_a;
his.b=_b;
}

最重要的是当我们写一个js文件,一个html文件,想让html里面实例化的也就是new的新对象的参数可以带入到我们js文件的类中,就用constructor

//js中的类
export default class Rain{
    y=1;
    speedY=4;
    elem;
    rect;
    static WIDTH=2;
    static HEIGHT=4;
    static list=[];
    constructor(_x){
        this.elem=this.createElem(_x);
        this.moveTo(this.y);
        Rain.list.push(this);
    }

//html中
let rain=new Rain(Math.random()*1400); 
这个参数就会带入到constructor的_x里面 在接收之后一般需要this.x=_x来进行获取

简单说下继承 : 继承字面意思继承父类方法

 class List extends Arrays{  
            // Arrays就是constructor
            constructor(_a,_b,_c){//传参  constructor就是类名
                super(_a,_b);//super超类的构造函数,
                // 如果子类中需要重新描述构造函数,则必须super()执行父类的构造函数
                这句话的解释就是如果我们要增加这个构造函数的功能,我们先super执行原来的
                再添加新的
                // 并且根据需求填入对应的参数
                this.c=_c;
            }
     在下面你还可以接着给list写方法和属性
     add push 等等
     
     //另外继承会被覆盖 也就是后写的会覆盖继承的

存储器

class  Animal {
	constructor() {
		this.name = name
	}
	get name() {
		return this.name
	}
	
	set name(val) {
		this.name = val
	}
}

let ani = new Animal("Dog")   //直接赋值
console.log(ani.name) // 调用getter
ani.name = "cat" // 调用setter
JavaScript进阶十一(JS面向对象编程及类的定义) 文章目录一、JavaScript的面向对象编程二、使用步骤1.引入库2.读入数据总结 一、JavaScript的面向对象编程 1、面向过程:核心是解决问题的过程 2、面向对象:核心是对象。关注每个对象在解决问题中的行为。特征为: (1)封装性:对象是属性(静态特征)和行为(动态特征)的结合体(封装体)。 (2)继承性:父类(基类)的属性和行为可以派生到子类中。子类不需要重复定义。 (3)多态性:同一个消息传递给不同的对象,得到的结果不同。 二、使用步骤 1.引入库 代码如下(示例): import 阅读详情

相关推荐

微积分,用编程理解高数(python,C,C++)

很好理解,导数中,x是哪一点的导数,dx是精准度,y等于f(x)即函数。导数结果就是瞬时变化率。积分很好理解,a为下限,b为上限,y为函数,结果就是y=f(x)下a到b的面积。只要用定积分代入a=0,b=10(10s)y=x(1*x=1)就得到结果。F(x)为原函数,即微分后的函数是f(x)dx,微分前是F(x)一列车初始速度为10m/s,加速度为。才几十行代码,微积分也不是很难啊。,问速度达到20时车走了多少米。

linhhanpy的博客 1178

JavaScript 到底是面向对象还是基于对象?

与其它的语言相比,JavaScript 中的“对象”总是显得不是那么合群。一些新人在学习 JavaScript 面向对象时,往往也会有疑惑:为什么 JavaScript(直到 ES6)有对象的概念,但是却没有像其他的语言那样...

cuiyong7700的博客 639

A-Level经济例题解析及练习Opportunity Cost

例题Question: Opportunity CostYou are selling your 1996 Mustang.  You have already spent $1000 on repairs. At the last minute, the transmission dies.  You can pay $600 to have it repaired, or sell the car “as is.”In each of the fol

Alevel3的博客 744

JavaScript面向对象&JavaScript类

一、面向过程 核心是解决问题的过程。编程时

YANGMENGZHENG的博客 583

MaxDEA如何计算超效率DEA

MaxDEA如何计算超效率DEA第一步,导入数据,设置输出和输出,点击OK;第二步,运行模型; 本文计算的是超效率DEA-BCC。 第一步,导入数据,设置输出和输出,点击OK; 第二步,运行模型; 在distance选项框中选择Radial:CCR(1978);BCC(1984)。 在Orientation中选择Non-oriented。其中,Input-oriented是投入最小;Outp...

王樰沫 1万+

海康visionmaster开发笔记10-集成HALCON第三方算子到VM工具箱的方法

海康visionmaster开发笔记10-HALCON第三方算子到VM工具箱的方法

视觉人机器视觉的博客 4347

面向对象编程语言为什么要有类?

打个比方,我们要建造一间房子,有很多的建筑方法。比如你可以用沙硕建造,或者把沙硕烧制成砖块建造;甚至直接从工厂购买定制房屋建造。这三种方法代表了不同的组合尺度,沙硕的单位最小,在沙硕基础上烧制的砖块要大一些,而定制的房屋则是最高的尺寸,使用它可以最快速的搭建我们的房子。   上面的比方与我们编程的概念有很大的相同之处。面向过程编程语言的基本单元是结构体和方法,它们实现了基本的代码复用。在我们需

1165

【二 Deepseek+Coze案例】【 2.2 Coze + Deepseek 实现小红书爆款笔记:打造专属Agent智能体】

摘要 本文介绍了如何利用Coze平台和Deepseek模型构建自动化Agent智能体,用于生成和优化小红书爆款笔记。文章首先分析了爆款笔记的核心特征,包括精准定位、吸引标题、实用内容、精美排版和热门标签。随后提出Agent智能体的功能需求,涵盖热点追踪、内容生成与优化、数据分析及自动发布等模块。在技术实现上,详细阐述了从环境配置、数据采集到内容生成与优化的全流程,并提供了Python代码示例,展示如何调用Coze函数获取热点数据及竞品笔记。该方案通过智能化的内容创作与运营策略,帮助用户高效打造高曝光的小红书

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 2278

ES6、 ES7、 ES8、 ES9、 ES10 新特性概览

ECMA规范最终由 TC39 敲定。TC39由包括浏览器厂商在内的各方组成,他们开会推动JavaScript提案沿着一条严格的发展道路前进。 从提案到入选ECMA规范主要有以下几个阶段:ES6的特性比较多,在 ES5 发布近 6 年(2009-11 至 2015-6)之后才将其标准化, 两个发布版本之间时间跨度很大,所以ES6中的特性比较多。1.1 类(class) 对熟悉 Java,object-c,c# 等纯面向对象语言的开发者来说,都会对class有一种特殊的情怀。 ES6 引入了class(类),让

明天也要努力的博客 1819

深度解析:LPDDR5 采样 Mask 背后的秘密 —— 从 Jitter 到 BER 全面剖析

在 LPDDR5 中,CK/DQS 信号相当于“指挥棒”,而数据(DQ)要在时钟节拍里被准确采样。Crosspoint Mask 区域横轴:时间 (Time)纵轴:电压 (Vref)👉 只要采样点落在这个区域内,数据就是正确的。否则就会出错。BERPBERPMask 就像高速公路的收费站口,如果车(采样点🚗)在车道内,顺利通过;一旦跑偏,就撞护栏。LPDDR5 的速率极高,UI 非常短,Mask 区域成为核心指标各种 Jitter、Noise 会不断压缩 Mask。

weixin_43199439的博客 354

基于STM32的嵌入式平台实现EtherCAT主站

本文将介绍如何在基于STM32的嵌入式平台上构建EtherCAT主站,并提供相应的源代码。使用SOEM库提供的API函数,我们可以实现与EtherCAT从站设备的实时通信和数据交换。在STM32的代码中,使用SOEM库提供的API函数初始化EtherCAT主站。在SOEM库中,我们可以找到EtherCAT主站的实现代码和相关的API函数。使用SOEM库提供的API函数实现EtherCAT主站的功能,包括发送和接收EtherCAT数据帧、处理从站设备的状态等。确保连接正常并且设备能够相互通信。

CodeSageX的博客 2832

浅谈 js 面向对象

前言 我们想来思考一个问题,对象是什么。简言之,包含属性和方法的就是对象。更严肃一点即“类的实例”。

liujiebahuang的博客 6918

Python 爬虫实战:爬取 BOSS 直聘职位,实现岗位要求关键词提取

摘要:本文基于BOSS直聘数据分析师岗位信息,采用Python爬虫技术获取职位数据,通过文本分析和可视化方法研究岗位技能需求特征。研究首先设计爬虫程序获取职位基本信息和岗位要求文本,经数据清洗后运用jieba分词和词频统计提取关键词。结果显示SQL、Python为最核心技能,不同级别岗位需求差异明显:初级重基础数据处理,高级需建模和管理能力;行业间亦存在差异,互联网关注用户增长,金融侧重风控。研究为求职者技能提升提供了数据支持,同时展示了从非结构化文本中挖掘有价值信息的完整流程。

2503_91057718的博客 1766

【JS高级进阶】JavaScript初识面向对象

本篇主要讲解了什么是面向对象,如何创建使用类,super关键字的使用以及注意事项(学过Java的小伙伴们就会很容易理解)区分面向对象和面向过程

zhaochen1127的博客 2700

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【javascript】js中关于Class(类)的介绍和使用

类语法有两个组成部分:类表达式和类声明。类声明和类表达式的主体都执行在严格模式下。比如,构造函数,静态方法,原型方法,getter 和 setter 都在严格模式下执行。一个类的类体是一对花括号/大括号 {} 中的部分。这是你定义类成员的位置,如方法或构造函数。constructor方法是一个特殊的方法,这种方法用于创建和初始化一个由class创建的对象。一个类只能拥有一个名为“constructor”的特殊方法。如果类包含多个constructor的方法,则将抛出 一个SyntaxError。

qq_2511276124的博客 2748

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JavaScript面向对象和类

JavaScript的面向对象与class类的继承,使用面向对象会更加的贴近现实,贴近生活!

ITjun666的博客 924

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JavaScript 之面向对象

JavaScript 面向对象 一、面向对象编程介绍 1.1 两大编程思想 面向过程 面向对象 1.2 面向过程编程 POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 举个栗子:将大象装进冰箱,面向过程做法。 面向过程,就是按照我们分析好了的步骤,按照步骤解决问题。 1.3 面向对象编程 OOP (Object Oriented .

msn131420的博客 4583

简单介绍JavaScript的面向对象

任何实现该接口的类都必须提供这些方法的具体实现。

浪漫韫秋 1240

JavaScript 类和对象

类和对象前言面向对象的思维特点对象class 类创建类添加属性constructor()方法类里面添加方法类的继承super()调用普通函数注意规范 super要放在this的前面使用类的注意点注意点1注意点2注意点3 前言 面向对象 更贴近我们的实际生活 可以使用面向对象来描述现实世界事物 但是事物可以分为具体的事物和抽象的事物 比如说 手机 和 华为 手机就是抽象的 泛指所有手机 华为就是具体的 特指华为品牌的手机 面向对象的思维特点 抽取(抽象的)对象共用的属性和行为 封装为一个类(模板) 对类进行

xihuanLilia的博客 2305

JavaScript面向对象(面向对象、面向过程、类与对象、对象的遍历、js内置对象)

JavaScript面向对象编程前言两大编程思想(*重要*)面向过程面向对象两大编程思想对比面向对象面向对象的特征类什么是类?类的创建对象什么是对象?对象的创建遍历对象JavaScript内置对象Math对象日期对象数组对象字符串对象 前言 两大编程思想(重要) (1)面向过程 (2)面向对象 面向过程 面向过程就是分析出解决问题所需要的步骤,然后把这些步骤一步一步实现,使用的时候再一个一个依次调用。 即按照我们分析好的步骤,按照步骤解决问题。(更注重过程实现) 面向对象 面向对象就是把事务分解成

星河梦~的博客 1348

JavaScript类和对象

面向对象是把事务分解成一个个对象,然后由对象之间分工与合作。是以对象功能来划分问题,而不是步骤。 面向对象编辑具有灵活、代码可复用、容易维护和开发的优点。 面向对象的三大特征:封装性、继承性、多态性。.........

不畏惧被人讨厌而是勇往直前,不随波逐流而是激流勇进,这才是对人而言的自由。 1693

JavaScript高级第一天学习总结—— 面向对象、ES6 中的类和对象、类的继承、案例:面向对象版tab 栏切换

面向对象编程介绍 两大编程思想 面向过程 面向对象 面向过程编程 POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 总结:按照步骤编程 (函数和变量) 面向对象编程 OOP (Object Oriented Programming) 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。 总结:将需求分析出一个一个的对象,然后在分析出对象中的属性和方法,最

weixin_52819925的博客 2318

浅谈javascript面向对象理解

1.面向对象与面向编程的比较 1.1 面向对象(oop) 面向对象是把事物分解称为一个个对象,然后由对象之间分工与合作,是以对象功能划分问题,而不是步骤 特征: 封装性、继承性、多态性 优点: 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 缺点: 性能比面向过程低 ...

Lin__hr的博客 1929

JS(JavaScript)中的面向对象编程——详细总结(附源码)

文章目录一,什么是面向对象二,JS面向对象的几种特征以及类和对象1,面向对象的几种特征2,面向对象中的类和对象三,JS中默认存在的类(常见的)1,Number类2,String类3,Boolean构造器(JS中构造器也叫类)4,Object构造器(存在语法糖)5,Data类6,Math类(不需要new)7,Array类四,JS中的对象1,证明:JS中的一切数据都是对象2,对象是属性的无序集合3,对象属性的增删改查(1)对象属性的遍历(for in)(2)对象属性的增删改4,对象中属性的四大特征(1)conf

qq_44830054的博客 1349

JavaScript 高级—面向对象(面向对象、ES6 中的类和对象、类的继承)

目标: 能够说出什么是面向对象 能够说出类和对象的关系 能够使用class创建自定义类 能够说出什么是继承 1.面向对象编程介绍 1.1两大编程思想 面向过程 面向对象 1.2 面向过程编程 面向过程编程,即POP(Process-oriented programming)。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 1.3 面向对象编程 面向对象编程,即 OOP(Object Orie...

m0_59030524的博客 775

JS面向对象和构造函数

面向对象编程 需要我们掌握 对象 类 实例对象:万物皆对象 类:对象的具体细分 (按照功能特点进行分类:大类丶小类) 实例:类中具体的一个事物 (拿出类别中具体一个实例进行研究,那么当前类别下的其它例也具备这些特点和特征) 整个JS 就是基于面向对象设计和开发出来的语言,我们学习和实战的时候也要按照面向对象的思想去体会和理解。 JS中的内置类 基于基类我们可以创建很多自己的类(自定义的类)。...

nowchange的博客 2363
上一篇: javascript作用域和预解析
下一篇: cookie,localStorage和sessionStorage,session的区别和使用
MaxLoongLvs
博客等级 码龄9年 226粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaxLoongLvs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值