• JS学习:第一周——NO.3面向对象


    【面向对象基础知识】
    1. 封装:对于功能相同的代码,我们只需封装一次,以后再遇到类似的功能,只需调用即可,无需重写,避免大量冗余代码。
    2. 对象的特征:方法和属性;
    3. 面向对象的特点:
    • 封装:低耦合高内聚;
    • 继承:子类继承父类的属性和方法,但是不影响父类的功能;
    • 多态:主要包括重载和重写;
    • 备注:①重载:JS没有严格意义上的重载,但是有类似重载的功能,传不同的参数可以实现不同的功能,
                         ②重写:子类可以重写父类的方法属性;
    【单例模式】(本质就是对象)
    1. 单例模式优缺点:
             (1)实现模块化开发,是最简单的模块化开发
                          ①不同模块之间的相互调用:对象名.属性名;
                          ②本模式之间的相互调用:this.属性名;
             (2)避免全局变量名的冲突
                    注意:引入各个模块,需要注意引入顺序,引入顺序按照各个模块之间的相互依赖进行前后排列。
    1. 模块化开发:对于一个大型的项目,项目组合分配给不同的工程师同步开发,等所有的工程师都开发完成的时候,进行项目的随后合并。
    【工程模式】(本质就是普通函数的封装)
        三步骤:
         (1)引进原材料——创建一个空对象;
         (2)加工对象   ——输出对象;给对象添加属性和方法;
         (3)输出产品——返回对象,return 对象;
       优缺点:
          优:避免了单例模式中的大量冗余代码,进行系统的封装;
          缺:跟系统内置类的调用方式不同;
    【构造函数】(1.首字母大写,2.;3.构造函数中存放的都是私有属性和方法)
    1.   和工厂模式的不同;
              1)调用的时不同:
                   工厂模式:调用的时候,只是普通的函数的调用
                   构造函数模式:new   CreatPerson();
              2)函数体内不同;
                   工厂模式三步:创建对象;加工对象;返回对象;
                   构造函数:只有加工对象,因为系统会默认为其创建对象和返回对象
         2.构造函数:可以创建一个自定义的类,并且可以new出实例,构造函数主要是实例和类打交道;
         3.细节:①构造函数中的this都是new出来的实例;②构造函数中存放的都是私有属性和方法;
        ③构造函数系统默认返回this,不建议手动返回,如果非要自己手动返回:
            a:手动返回的时字符串类型:对以前实例上的属性和方法没有影响;
            b:  手动返回的是引用数据类型:以前实例身上的属性和方法就会被覆盖,实例无法调用属性和方法
        ④构造函数再调用的时候,如果没有参数,小括号可以省略;
        ⑤构造函数就是类和实例在打交道;
        ⑥构造函数中带var跟实例没有任何关系,实例只跟this.xxxx有关;
    【原型模式】
    1.原型模式:主要是类  实例  和原型;
    2.原型的基础知识:☆☆☆☆☆☆
       ①每个函数数据类型(普通函数,类)上,都有一个属性,叫prototype,是一个对象;
       ②prototype这个对象上,天生自带一个属性,constructor指向当前这个类;
       ③每个对象数据类型(普通对象,prototype,实例)都有一个属性,叫做__proto__;指向当前实例所属类的原型;
    3.Object。prototype上面的属性和方法:
       hasOwnProproperty判断是否是私有;  
     判断公有属性:function hasPubProperty(attr, obj) {
        return attr in obj && !obj.hasOwnProperty(attr);}
      isPrototypeOf判断前一个对象是否在原型链上;  
       propertyIsEnumerable
    4.条件反射知识点:
    1)构造函数:构造函数中的属性和方法都是私有的;  
    2)构造函数中的this都是实例;   
    3)prototype上的属性和方法都是公有的;   
    4)构造函数模式:实例和类;   
    5)原型模式:实例 类  原型;
    6)__prototype__:原型链;
    7)当给  类.prototype={}   这样赋值的时候,constructor指向会出问题
    【原型链】
    定义:如果想查找  对象.属性名:
    1.会先在自己的私有空间中进行查找,找到的话,说明X是私有属性
    2.找不到:通过__proto__去当前实例所属类的原型上进行查找,找到的话,说明是共有属性;
    3.找不到:继续通过__proto__去当前实例所属类的原型进行查找,找不到将继续通过__proto__一直找到Object
    instanceof:检测实例属于某个类
    “x” in Fn:判断某个属性是否再对象上,包括私有和共有属性;
    .hasOwnProperty(' '):判断是否为私有属性;
    IE下禁止使用__proto__;
    【学习原型链模式的好处】:
    1)了解系统提供的类的构成;
    2)可以提供更多的学习机会,比如  ,ary.keys不知道;可以通过查询来扩充自己的知识范围;
    3)可以给系统内置类扩充更多的方法,便于团队里的合作开发者。
    【耦合与内聚】
    耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息
    内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
    所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
    耦合:一个软件结构内不同模块之间互连程度的度量。
    对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。
     
    1. 类数组包含两种:1)arguments;2)元素集合;
     
  • 相关阅读:
    高并发编程之基础概念
    使用JAXB实现Bean与Xml相互转换
    python语法(五)—函数
    2018年终总结
    python语法(四)— 文件操作
    excel开发
    spring 常用注解,@primary注解
    spring中InitializingBean和@Bean的初始化,bean初始化
    @PostConstruct 注解
    LocalDateTime java8
  • 原文地址:https://www.cnblogs.com/HKCC/p/6052732.html
Copyright © 2020-2023  润新知