1.什么是面向对象

面向对象的语言都有一个标志,就是他们都有类的概念。对象的抽象就是类,类的实例化就是对象。

面向对象编程指得是编程的一种思想模式

比如要制作一辆汽车

面向过程的话我们需要:

(1)列出需要什么组件

(2)购买组件

(3)组装生产

(4)得到成品

面向对象的话我们只需要按一下按钮就生产出一辆车来,至于车是怎么生产出来的我们不需要了解

2.创建对象

1         var car = {};//创建一个空对象
2         car.name = name;
3         car.color = color;
4         car.show=function(){
5             alert(car.name);
6         }

这种是JavaScript创建对象最基本的方法,但有个缺点,想创建一个类似的对象,就会产生大量的代码,不够优化,所以我们会用一个函数把它封装起来,这就用到了对象的封装

3.对象封装

3.1工厂模式

    function Car(name,color){var car = {};//创建一个空对象car.name = name;car.color = color;car.show=function(){alert(this.name);}return car;}var car1=Car("奥迪","白色");var car2=Car("宝马","黑色");

工厂模式解决了对象重复实例化的问题,但是不能识别到底是哪个对象的实例,因为都是用new Object()创建的

3.2构造函数

    function Car(name,color){this.name = name;this.color = color;this.show=function(){alert(this.name);}}var car1=new Car("奥迪","白色");var car2=new Car("宝马","黑色");

  alert(car1.show==car2.show2);//false,引用地址不同

使用构造函数的方法,即解决了重复实例化的问题,又解决了对象识别的问题

但是每次实例一个对象的时候都会重新占用一次内存,因为car1和car2的属性和方法的内存地址是不同的,造成内存的浪费

3.3原型方式

每个对象都有prototype属性,对象可以继承prototype里的属性和方法

    function Car(){}Car.prototype.name = "奥迪";Car.prototype.color = "白色";Car.prototype.show = function(){alert("开汽车");}var car1 = new Car();var car2 = new Car();

  alert(car1.show==car2.show2);//true,引用地址相同

属性和方法都写在原型里面,然后实例化出对象就不会重新分配内存,解决了内存资源浪费的问题

但是如果实例化出的对象属性值或者方法不同怎么办?我们制造的车并不都是奥迪,也不都是白色的。

3.4混合模式

混合模式是把构造函数与原型结合起来使用,将不变的方法和属性写在原型中,将需要改变的属性和方法写在构造函数里

    function Car(name,color){this.name = name;this.color = color;}Car.prototype.show = function(){alert("开汽车");}var car1=new Car("奥迪","白色");var car2=new Car("宝马","黑色");

3.对象继承

原型链继承

对象冒充call和apply

转载于:https://www.cnblogs.com/GaiaBing/p/5730640.html

面相对象的学习,对象的封装与继承相关推荐

  1. C++学习笔记【封装、继承、多态】

    C++学习笔记 [封装.继承.多态] 个人通过学习C++,手打出了一份27000字C++笔记,包括封装继承多态等面向对象的思想:笔记中包含了大量的代码案例对每个重要的知识点进行了代码演示,通过理论和实 ...

  2. OOJ-面向对象编程的三大特点-封装,继承,多态分析与实例

    今天谈谈面向对象编程的三个主要的关键词:封装.继承.多态. javascript面向对象编程,既然是面向对象编程不得不提到面向对象的几大关键字:封装,继承,多态. 首先:封装 在前几篇的文章中我们已经 ...

  3. Java---面向对象编程三大特征【封装、继承、多态】及super关键字、方法重写/覆盖(不定期更新补充)---B站韩顺平老师视频总结

    文章目录 三大特征 面向对象编程-封装 封装介绍 封装的理解和好处 封装的实现步骤(三步) 封装的简单案例 封装与构造器 封装的练习 面向对象编程-继承 为什么需要继承 继承基本介绍和示意图 继承的基 ...

  4. Python面对对象编程——结合面试谈谈封装、继承、多态,相关习题详解

    1.面向对象的三大特征 封装:属性和方法放到类内部,通过对象访问属性或者方法,隐藏功能的实现细节.当然还可以设置访问权限; 继承:子类需要复用父类里面的属性或者方法,当然子类还可以提供自己的属性和方法 ...

  5. python基础------类与对象之间的关系,封装、继承、多态

    类与对象.封装.继承 练习1 # 1.写一个员工类BwEmployee class BwEmployee(object): # (2)添加构造方法,包含5个形参,保存外部传入值,分别给以下实例属性赋值 ...

  6. python面向对象之封装、继承与多态

    目录 面向对象程序设计 类和对象 属性查找 数据属性 实例属性 类的封装 封装数据 封装⽅法(隔离复杂度) 类的⽅法 类的继承 继承概述 单继承 多继承 ⽅法重写 继承原理 深度优先&⼴度优先 ...

  7. python封装继承多态_Python:封装、继承、多态、私有成员

    Python作为一种面向对象语言,也有着面向对象的三种特性:封装.继承.多态. 封装: 将事物相关的属性和方法封装在某一个类里面,使得在调用类创建实例时,可以不用关心类内部的实现细节. 类的本质: 1 ...

  8. 【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态

    这一周Python语言学习,记录如下. 01 面向对象编OOP 1.1 为什么学习和应用OOP? 1 OOP适合更加复杂的需求分析和项目开发. 2 OOP具有更强大的封装能力. 3 OOP相比于面向过 ...

  9. jQuery学习笔记系列(一)——入口函数,jQuery对象和DOM对象,jQuery选择器、样式操作、效果(显示隐藏、滑入滑出、淡入淡出、自定义动画、停止动画队列)

    day01 - jQuery 学习目标: 能够说出什么是 jQuery 能够说出 jQuery 的优点 能够简单使用 jQuery 能够说出 DOM 对象和 jQuery 对象的区别 能够写出常用的 ...

  10. php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

    php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数 php内置函数可以直接使用,如果没有安装php扩展即可 ...

最新文章

  1. kvm虚拟化技术下虚拟机磁盘的数据保护
  2. c语言解逻辑问题的一般步骤,C语言面试题---逻辑短路问题
  3. epson机器人编程 范例_2019年机器人盘点(IREX篇)
  4. linux打包启动这着的文件,linux – 打开一个RPM文件并重新打包它
  5. vins中imu融合_视觉和imu融合的算法研究
  6. Docker-pull
  7. java虚拟机(JVM)的内存设置
  8. 树莓派使用无线网卡上网相关命令
  9. 触发器 索引视图 游标 事务
  10. lc滤波器是利用电感的感抗_由浅入深讲解滤波电路工作原理
  11. Deepgreen/Greenplum删除节点步骤
  12. 利用感知机实现鸢尾花分类问题
  13. 高考试题管理系统出题模块——C语言课程设计
  14. STM32学习手记5 BKP后备寄存器、RTC和中断
  15. 奈学教育大数据架构分享下载
  16. 成功,很简单!推荐5款网站,拒绝做行动上的矮子!狂甩拖延症!
  17. 【一学就会的ROS基础入门教程 】03-1 ROS基础编程:ROS工作空间的创建、话题topic的发布与接收、以及话题消息的自定义使用
  18. DELPHI中拖放的操作
  19. 初等矩阵及初等变换中的符号意义
  20. uni-app为组件uni-icons增加自定义图标(超简单)

热门文章

  1. 基于MySQL的电商零售订单数据分析
  2. springMVC+mybatis+spring+ehcache
  3. 喧嚣现世的“桃源”净土
  4. 【Debug】git push 报错提示: This repository(including wiki) size 1049.73 MB, exceeds 1024.00 MB
  5. Python使用Opencv图像处理方法完成手势识别(一)
  6. 100个酒瓶(含盖),每8个盖子或3个空瓶可以换一瓶酒(含盖),请计算瓶盖瓶身独立去兑换,能兑换多少...
  7. 浅谈Unity与VR产业,用Unity开发第一款VR应用
  8. 自学Python--网络编程之基础
  9. 380v三相相序缺相保护系统设计
  10. MATLAB App Designer —— 手撕代码学习总结