面向对象编程思想

1.面向对象概念

  1. 面相过程:注重解决问题的步骤,分析问题需要的每一步,实现函数依次调用
  2. 面相对象:是一种程序设计思想。将数据和处理数据的程序封装到对象中
  3. 面相对象特性: 抽象、 继承、封装、多态(提高代码的复用性及可维护性)
    在这里插入图片描述

2.创建对象3种形式

1.字面量方式

2.new Object()创建

3.构造函数创建

3.工厂模式

     解决代码复用问题

在这里插入图片描述

通过new运算符简化工厂模式代码

new的特点:1.new执行函数 2.自动创建空对象; 3.this绑定到空对象;4 隐式返还this

4.构造函数性能

 1.公共空间存放公共方法

2.工厂模式对比构造函数
	--构造函数中的prototype原型不占用多个内存,工厂模式无原型,性能差
	--工厂无法判断对象实例

5.prototype原型

1. 原型:解决构造函数性能问题,节约系统空间
- 通过new实例化出来的对象其属性和行为来自两个部分,一部分来自构造函数,另一部分来自原型
- 当声明一个函数的时候,同时也申明了一个原型 
- 原型本身是一个对象
- - 遵循对象属性方法查找规则 

在这里插入图片描述

2.原型与构造函数及对象的关系


3.原型的固有属性  constructor
- 指向对象实例:console.log( zhangsan.constructor===Person); //true
- -可用做属性判断

6.原型链

1.对象之间的继承关系,在JavaScript中是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条
-- 当访问一个对象的属性或方法时,会先在对象自身上查找属性或方法是否存在,如果存在就使用对象自身的属性或方法。如果不存在就去创建对象的构造函数的原型对象中查找 ,依此类推,直到找到为止,如果到顶层对象中还找不到,则返回 undefined
-- 原型链最顶层为 Object 构造函数的 prototype 原型对象,给 Object.prototype 添加属性或方法可以被除  null 和 undefined 之外的所有数据类型对象使用

2.原型示例图

7.继承

1.三个函数 call apply bing
- -  foo.call(obj,"张三",20);
- -  foo.apply(obj,["张三",20]);
- -  foo.bind(obj)("张三",20);  -->返回一个新函数,再调用
- 三个函数皆改变this指向  -> obj 

2.原型链继承
- - 简单原型继承,出现影响父类的情况

8.原型的深拷贝继承

1.传值和传址问题
  - - 基本数据类型:Number、String、Boolean、Null、Undefined
  - - 复杂数据类型/引用数据类型:Array、Date、Math、RegExp、Object、Function等
2.JOSN序列化的不足
  - 如果拷贝对象包含函数,或者undefined等值,此方法就会出现问题

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值