JS中的面向对象介绍

什么是面向对象?所谓的面向对象是一种编程思想,代码的书写格式
之前为了简化代码,我们是将程序封装为函数的形式来调用
函数会有一些小问题:函数内部定义的局部作用域变量,函数外部无法直接调用;函数调用使用时,会占用大量的系统内存,容易造成数据溢出数据泄露,容易被黑客攻击;函数一般只是封装一些模块化的功能
复杂程序的封装会封装成其他形式,使用面向对象的方式来封装程序
之前的编程方式称为面向过程的编程方式,面向过程和面向对象编程思想的区别用生活中的实例来举例 : 吃饺子
面向过程:①和面②和饺子馅③包饺子④烧水⑤水开了煮饺子⑥捞饺子⑦吃饺子
面向对象:①找一个饺子馆 — 封装的面向对象的程序完成制作饺子的过程,我们只要点就可以了②点饺子 — 调用封装的程序③做好了吃饺子④结账

面向过程 : 自己独立的一步一步的完成程序的定义和执行
面向对象 : 有封装好的面向对象的的程序,直接调用执行就可以了。功能和作用类似于封装好的函数,但是封装的语法和思想与函数不同

为什么是面向“对象”,而不是面向“字符串”之类的?
对象的优点:
①对象中可以定义并且存储多个数据单元以及所有JavaScript支持的数据类型
const obj = {age:18,name:'张三',fun:()=>{},arr:[1,2,3,]}
②对象中调用具体数据很方便,不用考虑数据的顺序
const obj1 = {age:18,name:'张三'} const obj2 = {name:'张三',age:18}
调用 name 和 age 都是不用考虑数据单元的顺序,只要键名/属性输入正确就可以了
③对象中可以定义函数,还可以通过函数的this方便地调用对象本身的数据
const obj1 = {age:18,name:'张三',fun:function(){ console.log(this.name) }}
const obj2 = {age:18,name:'张三',fun:function(){ console.log(this.name) }}
调用对象的数据不用管对象名称是什么,只要通过this就可以指向这个对象,
obj1中的this指向的就是obj1,obj2中的this指向的就是obj2,this.name分别就是obj1.name和obj2.name

面向对象编程的基本思路:创建一个对象,给这个对象添加上属性和属性值还有函数等方法,之后通过操作这个对象来完成需要的效果

        // 先通过一个函数的方法来创建对象
        function createObj(){
            // 创建对象
            const obj = {};

            // 给对象添加属性和属性值
            obj.name = '张三';
            obj.age = 18;
            obj.addr = '北京';
            obj.sex = '男';

            // 给对象添加方法
            obj.funNameAge = function(){
                console.log(this.name , this.age);
            }
            obj.funNameAddr = function(){
                console.log(this.name , this.addr);
            }
            obj.funSexAge = function(){
                console.log(this.sex , this.age);
            }
            obj.funAll = function(){
                console.log(this.name, this.sex , this.age, this.addr);
            }

            // 返回这个创建好的对象
            return obj;
        }

        // 调用函数,函数创建对象,并且作为返回值
        // 变量中存储的就是函数创建的对象
        const obj2 = createObj();

        // 可以通过调用obj中存储的对方的方法来实现功能
        obj2.funAll();

工厂模式:所谓的工厂模式是一种书写函数的语法形式、语法规范。就像工厂中的流水线一样,按照步骤来执行需要的操作
步骤1:创建对象
步骤2:给对象定义属性和属性值
步骤3:给对象添加方法
步骤4:定义对象为返回值

            function createDumpling(pi,mian,xian,tiaoliao){
            // 创建包饺子对象
            const dumpling = {};

            // 给包饺子对象添加属性
            dumpling.pi = pi;
            dumpling.xian = xian;
            dumpling.mian = mian;
            dumpling.tiaoliao = tiaoliao;

            // 给包饺子对象添加方法
            // 和面
            dumpling.huomian = function(){
                console.log(this.mian);
            }

            // 和饺子馅
            dumpling.huoxian = function(){
                console.log(this.xian);
            }

            // 包饺子
            dumpling.bao = function(){
                console.log(this.xian,this.pi,this,mian);
            }

            // 煮饺子
            dumpling.zhu = function(){
                console.log('煮饺子了,等着吃吧');
            }

            // 返回包饺子对象
            return dumpling;
        }

        // 要开始包饺子,创建一个执行包饺子功能的对象,并且输入参数
        const baojiaozi1 = createDumpling('薄皮' , '白面粉' , '猪肉大葱');

        const baojiaozi2 = createDumpling('厚皮' , '玉米面' , '鱼香肉丝');
        console.log(baojiaozi1);
        // 可以调用任意的封装的方法
        baojiaozi1.huoxian();   // 调用和饺子馅方法
        baojiaozi1.huomian();     // 调用和面方法

面向对象编程的优点:优点与函数的优点类似
高内聚 : 将所有需要的程序都定义封装在对象内,对象中存储所有需要的属性,所有需要的方法
低耦合 : 尽量减少特殊程序的执行

面向对象编程的特点
抽象 — 通过描述 对象 共有的特点(属性和属性值) 来形容一个对象,这个对象不是一个非常具体事例的内容,是一个抽象化的实例
封装 — 将所有的程序都定义在一个对象中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像的目标属于哪个类别。 定位问题:确定目标在图像的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值