课程介绍:对象的概念,声明方式以及js种的继承和封装

    JavaScript中的面向对象 (oop)
    声明对象:
    1、字面量方式
    2、New
    3、构造方法声明
    4、工厂方法
    5、原型模式
    6、混合模式

    声明完对象之后,需要学习如何遍历属性和方法等:
    1、遍历属性和方法
    2、封装,继承
    3、封装:call apply
    4、对象冒充

    面向对象作用:可以后期通过面向对象方式开发一个类似jQuery的库


    JavaScript中的面向对象:
    概述:对代码的一种抽象,对外统一提供调用接口的编程思想
    一切皆为对象


    基于原型的面向对象方式中,对象(Object) 则是依靠构造器(constructor)利用原型(prototype)构造出来的;
    一切皆为对象


    JavaScript中面向对象的名词解释:
    1、属性:事物的特性
    2、方法:事物的功能
    3、对象:事物的一个实例
    4、原型:JavaScript函数中由prototype属性引用了一个对象,即原型对象

    人和汽车:
    属性: 人 — 名字、身高、年龄 汽车 — 长、宽、高、颜色

    方法: 人 — 学习、玩耍、唱歌 汽车 — 拉人、载货

    对象:事物的一个实例 —- 众多人中一个人


    JavaScript中闭包:
    概述:闭包是一个拥有许多变量和绑定了这些变量的环境表达式(通常来说就是一个函数)

    理解闭包,必须理解:变量作用域: 全局变量 局部变量
    在JavaScript中函数内部可以读取全局变量


    JavaScript的面向的声明方式:
    1、字面量式声明
    JavaScript面向对象 -- 课件 - 图1


    2、new操作符后跟Object构造函数
    Object是所有类的基类,根,所有的JavaScript对象都是由Object衍生的
    JavaScript面向对象 -- 课件 - 图2

    3、JavaScript中构造方法声明方式
    JavaScript面向对象 -- 课件 - 图3


    4、下面是拓展知识: — 创建对象 — 工厂模式
    JavaScript工厂方式声明对象 — 按照某种模式,可以不断的创造对象
    JavaScript面向对象 -- 课件 - 图4

    面试会问道:
    问题:构造和工厂模式有什么不同?
    1、构造方式不会显示创建对象,将属性赋值给this 不需要return对象
    2、工厂方法在方法内部创建了对象,返回的是object对象 属性和方法都是赋给object对象的;


    4、通过原型模式的声明对象:主要在对象的外部创建
    好处:让所有的实例化的对象都拥有它包含的属性和方法
    JavaScript面向对象 -- 课件 - 图5

    JavaScript面向对象 -- 课件 - 图6










    6、JavaScript声明对象之混合模式 — 构造模式+原型模式
    JavaScript面向对象 -- 课件 - 图7


    对象的遍历及存储
    1、遍历对象的属性和方法 — 对象有的时候可以当作数组去处理
    JavaScript面向对象 -- 课件 - 图8
    JavaScript面向对象 -- 课件 - 图9


    对象在内存中的分布(存储)
    JavaScript面向对象 -- 课件 - 图10


    封装:把对象内部的数据和操作细节进行隐藏; private — 接口一般为调用方法
    1、JavaScript中没有专门封装的关键词 可以使用闭包创建这种模式 — 函数内部声明的变量外部是无法访问的
    2、能否被访问 取决于:公有和私有内容区别 — 能否在对象外部被访问
    JavaScript面向对象 -- 课件 - 图11

    JavaScript面向对象 -- 课件 - 图12

    JavaScript面向对象 -- 课件 - 图13


    1、这种模式有点消耗内存,一直return 创建对象;
    2、其实封装的本意就是局部的属性隐藏起来;


    继承:
    1、原型:是利用prototype添加属性和方法
    2、原型链:proto(对象的内置属性) — 用于指向创建他的函数对象的原型对象prototype
    3、案例;
    JavaScript面向对象 -- 课件 - 图14

    JavaScript面向对象 -- 课件 - 图15


    JavaScript面向对象 -- 课件 - 图16




    构造继承:
    1、在子类的内部构造父类的对象实现继承
    2、案例;
    JavaScript面向对象 -- 课件 - 图17


    对象内置方法中的apply和call都会用于继承,区别在于传参方式不同;
    1、call:调用一个对象的一个方法,以另一个对象替换当前对象
    2、Apply:应用某一个对象的一个方法,以另一个对象替换当前对象
    JavaScript面向对象 -- 课件 - 图18


    关键词:
    Instanceof delete call apply arguments callee this
    JavaScript面向对象 -- 课件 - 图19


    JavaScript面向对象 -- 课件 - 图20


    delete不能删除变量 不能删除原型链上的属性和方法
    JavaScript面向对象 -- 课件 - 图21

    JavaScript面向对象 -- 课件 - 图22

    JavaScript面向对象 -- 课件 - 图23


    JavaScript面向对象 -- 课件 - 图24