Javascr面向对象
面向对象和面向过程
面向对象:万物皆是对象
程序 = 对象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面向对象相关推荐
- 【AJAX】JavaScript的面向对象
Ajax中后端数据返回后需要前端通过JavaScript来实现动态数据更新的问题.所以,在Ajax中加深了一遍JavaScript面向对象的印象. 基础部分: JavaScript中创建对象并简单对象 ...
- 面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?
AutoSAR入门到精通系列讲解 将从2019年开始更新关于AutoSAR的知识,从入门到精通,博主xyfx和大家一起进步 雪云飞星 ¥29.90 去订阅 简单地说结构化分析方法主要用来分析系统的功能 ...
- 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类
目录 scala面向对象 MAVEN依赖 类 - 掌握 创建类和对象 - 掌握 getter/setter - 了解 类的构造器 - 掌握 scala面向对象 MAVEN依赖 <?xml ver ...
- php面向对象程序设计,PHP面向对象程序设计类的定义与用法简单示例
本文实例讲述了PHP面向对象程序设计类的定义与用法.分享给大家供大家参考,具体如下: class Person { private $name; private $sex; private $age; ...
- java面向过程和面向对象
面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...
- day22_面向对象
面向过程: 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 面向对象: 优点是:解决了程序的扩展性.对 ...
- java面向对象-------静态初始化块
1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...
- 7.12 其他面向对象设计原则3: 依赖倒置原则DIP
其他面向对象设计原则3: 依赖倒置原则DIP The Dependency Inversion Principle 7.1 依赖倒置原则DIP The Dependency Inversion P ...
- Day-16 面向对象03 类与类之间的关系
一.类与类之间的依赖关系 我用着你,但是你不属于我,这种关系是最弱的,比如,公司和雇员之间,对于正式员工,肯定要签订劳动合同,还得小心伺候着,但是如果是兼职,那无所谓,需要了你就来,不需要你就可以拜拜 ...
最新文章
- mac os 升级为Mountain Lion后,eclipse找不到JRE的问题
- 详解Spring Boot 2.X使用缓存@Cacheable代码示例
- VUE计算属性关键词: computed
- java的重写、重载、覆盖的差别
- 【kerberos】kerberos 认证 详情介绍
- 嘘,我已经瞒着开发解锁APP日志文件抓取及分析啦!
- 【实习招聘】创新工场首席科学家、原ACL主席、MSRA副院长周明老师领导的NLP团队招聘机器翻译方向实习生...
- 预处理_关于食材预处理
- 黄一老师:征信问答这些信用知识你都了解吗?
- Centos下ftp的安装和配置
- 生活如此美好 我却如此暴躁
- 启用静态NVI的NAT的配置步骤及示例
- 社交产品分析:共同看片,微光
- 常见算法整理---50题
- input file本地图片预览的方法(兼容IE、Chrome和Firefox)
- php5渗透,ThinkPHP的一些渗透方式
- 中国古人记录的奇妙客星
- 14-HAL库之I2C通信
- python菜鸟教程python机器学习工具库
- Windows Workflow Foundation 2 规则引擎简介