面向对象和面向过程

面向对象:万物皆是对象

程序 = 对象1+...+对象n

1.封装
2.继承
3.多态
面向过程:按照步骤进行代码编写

程序 = 算法 + 语法

缺陷

随着问题的增加,无法预知后续代码的发展
复用性太低(目前只谈函数的复用性)

类和对象的概念

类:拥有相同属性和行为的对象的集合

模板

对象:根据类属性和行为创建的实例化

强调唯一性,真实存在的

通过类可以实例化多个该类的对象,每个对象的属性值不同,可以说类好比设计图纸,而对象好比根据图纸建设出来的东西

构造函数和对象

ES5的方法创建类

用函数模拟类:用构造方法在ES5中用构造方法模拟类

//类的定义
function Student(newName,newAge){//this就是new出来的对象
//被this修饰的变量都是该类的属性this.name = newNamethis.age = newAgethis.eat = function(){//类内的方法如果使用其他的属性和方法。必须加this前缀}
}
//对象的定义
//构造方法必须和new关键字一起调用
let stu1= new Student("lijien",18)
//对象使用
console.log(stu1.name,stu1.age)
stu1.eat()
ES6的方法创建类

标准的创建方法

//class 类名{//  类体
//}class Student{constructor(newName,newAge){this.name = newNamethis.age=newAge}eat(){console.log("eat")}
}
let stu = new Student("lijien",18)
类的组合
一个类的属性是另一个类的对象
类的依赖
一个类的成员函数的参数,是另一个类的对象

this (函数体内的关键字,根据不同类型函数,作用不同)this是函数的内置对象

1.与事件连接,代表触发事件的元素
2.与普通函数(不是构造函数)连用,代表调用函数的对象本身
3.在与构造方法连用,代表new的对象

面向对象

面向对象:OOP :分析解决问题的步骤,使用函数的方式一步步实现,使用的时候依次调用即可

把大象关进冰箱分为几步

1.分析步骤

​ (1)打开冰箱

​ (2)大象放进去

​ (3)关门

oop与现面向过程区别

面向过程

优点 性能比oop高

缺点 没有面向对象在后期方便维护 扩展性不高

oop

优点 后期方便维护 扩展性高

缺点 性能比面向过程低

类与对象

类: 就是对有相同的属性和行为的对象的集合

对象: 就是根基类的属性和行为的实例化(真是存在的)

总结

面向对象:就是传造出一个机器 用这个机器快速的创建出一个有属性(变量)有方法(函数)的对象

创建对象的方式?

(1)字面量方式

   // 1.字面量let user={uname:"huanghuang",uage:42,sex:"男",love:"女",showname(){console.log("我是一个方法");}}console.log(user.uage)

缺点 :字面量方式是定义对象的简写形式,在创建多个的时候非常麻烦

(2)Object构造器

    let demo=new Object()demo.name="宝贝";demo.home=()=>{console.log("跪下给我换拖鞋");}console.log(demo.name)

缺点 如果我像创建对各对象 那么必须每一次都需要new 然后在逐一添加属性和方法 会有大量的冗余代码。

(3) 工厂函数创建对象

      // 3工厂函数方式创建// 1.创建工厂function sicong(){// 2.创建出一个空对象let obj={}obj.name="sicong",obj.tedian=()=>{console.log("有钱");}// 3返回return obj}let demo=sicong()console.log(demo.name)

缺点:不够灵活 每次都是相同属性和方法的内容

(4)构造函数方式创建

  // (4)构造函数// 特点1:函数的首字母大写(用来区分普通函数)function CreateUser(name){// 特点2:this指向 指向的创建实例化之后的变量(new 之前的变量)this.name=name}// 怎么使用构造函数?// 特点3 必须使用new关键字来创建let demo= new CreateUser("LV")console.log(demo.name)

特点:灵活我们可以使用工造函数按照需要创建出指定的对象

什么是构造函数

构造函数的目的

可以非常方便的创建出一个有属性有方法的对象

特点

1.首字母大写

2.内部的this指向的是生成出来的对象

3.必须使用new关键字创建

(3-1)注意不使用new会怎么样?

function CreateUser(name){this.name=name}// 不使用new关键字 是构造函数错误的使用方式  硬要不用new只会出现undefinedconsole.log(CreateUser("LV"))

特点延续

注意: 构造函数创建出来的内容是什么?实例对象

注意2:在创建实例对象的过程叫什么?实例化

注意3:构造函数中不能有return?可以有 但是写了没有用白写

       function CreateUser(){return "我是构造函数return的字符串"}console.log(new CreateUser())

注意4 我们每次实例化的时候 new 构造函数的名字() 来创建 但是注意 如果不传参数的时候()可以省略

  function CreateUser(){}console.log(new CreateUser)

Javascr面向对象相关推荐

  1. 【AJAX】JavaScript的面向对象

    Ajax中后端数据返回后需要前端通过JavaScript来实现动态数据更新的问题.所以,在Ajax中加深了一遍JavaScript面向对象的印象. 基础部分: JavaScript中创建对象并简单对象 ...

  2. 面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?

    AutoSAR入门到精通系列讲解 将从2019年开始更新关于AutoSAR的知识,从入门到精通,博主xyfx和大家一起进步 雪云飞星 ¥29.90 去订阅 简单地说结构化分析方法主要用来分析系统的功能 ...

  3. 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类

    目录 scala面向对象 MAVEN依赖 类 - 掌握 创建类和对象 - 掌握 getter/setter - 了解 类的构造器 - 掌握 scala面向对象 MAVEN依赖 <?xml ver ...

  4. php面向对象程序设计,PHP面向对象程序设计类的定义与用法简单示例

    本文实例讲述了PHP面向对象程序设计类的定义与用法.分享给大家供大家参考,具体如下: class Person { private $name; private $sex; private $age; ...

  5. java面向过程和面向对象

    面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...

  6. day22_面向对象

    面向过程: 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 面向对象: 优点是:解决了程序的扩展性.对 ...

  7. java面向对象-------静态初始化块

    1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...

  8. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP

    其他面向对象设计原则3: 依赖倒置原则DIP  The Dependency Inversion Principle 7.1 依赖倒置原则DIP The Dependency Inversion P ...

  9. Day-16 面向对象03 类与类之间的关系

    一.类与类之间的依赖关系 我用着你,但是你不属于我,这种关系是最弱的,比如,公司和雇员之间,对于正式员工,肯定要签订劳动合同,还得小心伺候着,但是如果是兼职,那无所谓,需要了你就来,不需要你就可以拜拜 ...

最新文章

  1. mac os 升级为Mountain Lion后,eclipse找不到JRE的问题
  2. 详解Spring Boot 2.X使用缓存@Cacheable代码示例
  3. VUE计算属性关键词: computed
  4. java的重写、重载、覆盖的差别
  5. 【kerberos】kerberos 认证 详情介绍
  6. 嘘,我已经瞒着开发解锁APP日志文件抓取及分析啦!
  7. 【实习招聘】创新工场首席科学家、原ACL主席、MSRA副院长周明老师领导的NLP团队招聘机器翻译方向实习生...
  8. 预处理_关于食材预处理
  9. 黄一老师:征信问答这些信用知识你都了解吗?
  10. Centos下ftp的安装和配置
  11. 生活如此美好 我却如此暴躁
  12. 启用静态NVI的NAT的配置步骤及示例
  13. 社交产品分析:共同看片,微光
  14. 常见算法整理---50题
  15. input file本地图片预览的方法(兼容IE、Chrome和Firefox)
  16. php5渗透,ThinkPHP的一些渗透方式
  17. 中国古人记录的奇妙客星
  18. 14-HAL库之I2C通信
  19. python菜鸟教程python机器学习工具库
  20. Windows Workflow Foundation 2 规则引擎简介

热门文章

  1. 百度语音识别(采集麦克风声音 并自动转为文字)
  2. 对安装好的cesm测试
  3. 问卷调查类型全面解析
  4. sql 不使用引号、使用单引号或双引号的区别
  5. YzmCMS采集之如何利于Python爬虫采集全网文章
  6. 开源流程引擎Camunda
  7. 南大软院大神养成计划
  8. 有限元、离散元、边界元、无界元的区别和适用范围
  9. 蓝牙学习七(MAC地址)
  10. MAC地址、IP地址以及ARP协议详细讲解