• 1.3


    1、面向对象的目的就是生成对象 object

    2、生成对象的方式

      (1)单例模式(字面量定义)var obj = { }

      (2)类的实例  var obj=new Object()

      (3)工厂模式

      (4)构造函数:扮演三种角色   普通函数   普通的对象  类

      工厂模式,生成的对象必须要返回,构造函数模式不用return,构造函数模式默认return的是this,在构造函数内的this就是实例对象。

      构造函数如果人为return的不是对象,直接忽略,如果人为return的是对象,就取代this。

      工厂模式生成的实例对象的__proto__直接指向基类object的原型,

      构造函数生成的实例对象的__proto__指向他父类的原型,然后父类的原型上的__proto__指向基类object的原型。

      每个实例和实例之间都是独立的个体,他们之间的属性互不干扰,是不平等的,如果实例和实例之间的属性相等,则这个属性必须是父类的原型上的属性。是因为父类原型上的属性是可继承的,是共享的。

      在操作obj属性的时候,首先看这个属性是私有的还是从父类的原型上继承的,如果是私有的直接使用,如果私有的没有呢就查看父类的原型上有没有,如果有就直接使用,如果没有呢,再次向父类的父类的原型上查找,一直找到基类object上为止,如果object也没有就得到undefined。这就是原型链。

      instanceof   判断对象是不是这个类的实例对象

      isPrototypeOf() 判断实例对象是否是父类的原型

      getPrototypeOf()获取实例对象的原型

      hasOwnPropety()判断一个属性是不是自身(私有)的属性

      in 判断一个属性是不是这个对象上的不管是私有的还是公有的

      实例对象的原型就是他父类的原型

     

      如果不给类的原型指定一个对象,这个实例对象的__proto__上有一个constructor的属性‘

      如果给这个类的原型指定了一个对象,实例的__proto__就没有constructor属性了。

      构造函数里和原型里this都指向实例对象。

    this指向的问题

      1、this是一个对象,函数外的this都指向window

      2、函数内的this,他的指向跟函数调用有关,看函数前面有没有· 有就是指向· 前面的对象,没有就指向window

      3、定时器的this永远指向window,自执行函数里的this是window

      4、构造函数里的this和原型上的this都指向实例对象

     改变this指向的方法

      提前将this赋值

      call

      apply     

        call和apply执行是一样的都是将前面函数内的this改称第一个参数,然后执行前面的函数,不同在从第二个参数开始apply是一个数组

      bind    是只改变前面函数的this,但是不执行前面的函数,需要一个()带执行

    继承

      1、call继承 子类继承父类

      将父类的私有属性继承为子类的私有属性

      2、原型继承       将父类的私有和公有属性都继承为了子类的公有属性

  • 相关阅读:
    关于python的open函数encoding的入参
    控制台输出的log加颜色
    logging把log写到控制台
    合并两个list里的字典
    关于字典数组和元组合并
    python字典做入参调用时要写成**K这种形式
    python在循环中将含变量的字典加到列表中(问题:如果写法不当,会导致最后赋值的变量覆盖列表中前面赋值的变量)
    给定列表,按照列表内容获取excel指定列名下的内容
    selenum报错element is not attached to the page document
    python selenium获取input输入框中的值
  • 原文地址:https://www.cnblogs.com/bokeyanghao/p/10216306.html
Copyright © 2020-2023  润新知