• 面向对象


    1、面向对象 
    对象 :
        是一个整体,描述一个事物的所有信息 
        一切具有相同属性和行为的物质
        一切具有属性和方法的事物 
        对象数据类型 都有属性和方法   
     
     document.getElementById("").index = 0;  
    面向对象 :  是一种编程思想  
     
    面向对象的好处 : 
            功能独立  便于后期的管理和维护
            防止全局变量的污染
     
    面向对象  :体现的是生活逻辑
    面向过程 : 体现的是数据逻辑 
     
    什么是类 :( js中的类就是构造函数) 
        类是具有相同属性和行为的一类事物的总称 
     
    对象和类的关系:
          类是对象的抽象化(类是对象的抽象)
          对象是类的具象化(对象是类的实例) 
          先有对象 后有类
          js中:先写构造函数   再写new对象
     
    2、对象创建的几种方式  
    一、字面量{}创建对象
     var obj = {
        sname : "lichune",  属性
        tel : "666",
        teach : function(){  方法
     
        }
     }
     
    二、new方式创建
        var   obj = new Object();
          obj.sname = "lce";
          obj.eat = function(){
     
          }
     
    缺点 : 
        创建多个同类对象时,代码会重复     
        此两种方案只适用于一次创建一个对象
     
     
    3、工厂模式
    工厂模式
        可以创建多个同类的对象
     
    创建方式:
    1--定义一个函数
        function 工厂(){
            1、创建一个对象
            var obj = new Object();
            2、为对象添加属性和方法
            obj.属性= "值";
            obj.方法= function(){}
            3、返回创建的对象
            return obj
        }
     
    优点
        创建多个同类对象时,代码不会重复书写  
    缺点
        1、 一般对象是通过new关键字创建的,而工厂模式创建对象只是一种普通函数的调用 , 不符合对象的创建方案   不提倡使用
        2、 不能确定某个对象属于哪一个构造函数
     
     
     
     
    instanceof (测试某个对象属于哪一个构造函数)
    定义
        用来确定某个对象属于哪个构造函数
     
    用法
         对象 instanceof 构造函数名
        例如(arr instanceof Array)
        返回值是布尔类型,正确返回true,错误返回false
     
    4、构造函数
    说明 :  
        1、一般为了和普通函数进行区分,构造函数的函数名编写规范是  大驼峰 编写规范   
        2、写在构造函数内部的属性叫做实例属性,方法叫做实例方法
        3、构造函数内的this指向通过构造函数new出来的对象
        4、在构造函数内部,如果没有定时器或者事件,this一般指向new出来的对象
     
    优点 :
         对象创建方式规范,是通过new关键字创建的
         能确定某个对象属于哪一个构造函数
    缺点 :   
                多个同类对象被创建时,相同的方法会被重复创建
     
    5、原型方法和属性
    将属性和方法写在构造函数的外面
    说明 :
        1、写在构造函数外面的属性叫做原型属性
           写在构造函数外面的方法叫做原型方法
        2、通过构造函数.prototype.属性,创建原型属性       
                 通过构造函数.prototype.方法,创建原型方法
     
    优点 : 
        多个同类对象的相同方法是共享的,不会被重建 
    缺点 : 
        所有对象的属性名都相同
     
    6、混合
    将属性写成实例属性
    将方法写成原型方法
    解决了上面创建对象时遇到的所有的缺点  
     
    7、原型对象(原型对象就是原型)
    定义
        所有的构造函数都有一个prototype属性,这个属性就叫做原型对象 
        所有的构造函数new出来的对象都有一个原型对象(__proto__)(前后都是两个下划线)这个属性也指向原型对象
        对象.__proto__
    在原型对象上创建的方法是共享的。
    Array.prototype   String.prototype 
    面试题 : 在Array的原型上实现数组的去重   
     
    8、原型模式的执行流程
    首先在实例上查找,如果有实例属性或方法就返回。如果没有,就去原型上查找,如果有就返回 
    如果原型上没有对应的属性或方法,就去最外层的Object.prototype上查找,如果有就返回,没有返回undefined 
     
    9、原型链
    实例对象和原型之间的连接,就叫做原型链
     
    原型链和作用域链的区别
        作用域链:首先在函数内部查找某个变量,如果有就返回,不再向外查找,否则继续向函数外面查找(作用在普通函数上,查找全局变量和局部变量)
        原 型 链:作用在构造函数上,查找实例属性和原型属性
     
    10、原型中的关键字(扩展)
    测试某个对象是否属于某个类的方法 isPrototypeOf()
        语法:构造函数.prototype.isPrototypeOf(对象)
        判断一个对象是否指向了该构造函数的原型对象,可以使用isPrototypeOf()方法来测试,结果为boolean类型  同  instanceof
     
    delete :删除实例属性
        语法 :delete对象.实例属性
     
    是否包含该实例属性 hasOwnProperty()
           语法: 实例对象.hasOwnProperty("实例属性")
        包含返回true,否则返回false
     
    是否存在该属性(原型或实例中)in
        语法: "属性" in  对象实例
        存在返回true,不存在返回false
     
    思路
    1、确定构造函数(特效名称)
    2、确定构造函数的属性(特效操作的元素)
    3、确定构造函数的功能(特效操作的方法)
            入口方法init (页面一加载后的第一个功能)
  • 相关阅读:
    MAXSCRIPT 连数据库(转)
    Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)
    ArrayList知识点
    HashMap知识点
    使用docker 安装nacos
    记录docker 安装sonarqube和安装的一些坑
    sql优化
    Centos7下安装Docker
    使用docker安装gitlab
    docker安装jenkins
  • 原文地址:https://www.cnblogs.com/tis100204/p/10302379.html
Copyright © 2020-2023  润新知