面向对象

面向对象的目的就是生成对象

生成对象的方式

  1、单例模式

  2、类的实例

  3、工厂模式

  4、构造函数   扮演三种角色   普通函数     普通对象    类

构造函数的三个特点:  函数名首字母大写       里面的属性前面要加this       调用的时候要用new

工厂模式,生成的对象必须要返回

构造函数不用return     ,构造函数默认return的是this     在构造函数内的this就是实例对象

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

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

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

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

原型链:

  在操作对象.属性 的时候,首先看这个属性是不是私有的,私有的有就直接使用,私有的没有就找公有的

公有的有就使用,没有就通过__proto__找它父类的原型上有没有,直到基类object,如果object没有就是

undefined。这种查找机制叫原型链。

实例的__proto__上的属性

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

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

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

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

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

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

this的指向问题

  1、函数外的this指向window

  2、函数内的this指向行为发生的主体   主体怎么找    跟函数调用有关,看函数前面有没有.,有.就是.前面的对象,没有就是window

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

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

改变this的方法

  1、提前将this赋值

  2、call 、apply       执行是一样的都是将前面函数内的this改成第一个参数,然后执行前面的函数,不同的是第二个参数,apply是一个数组

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

克隆对象

  1、通过for-in       不管公有的还是私有的都克隆成私有的

  

  2、Object.create()     克隆到原型上面

  

 

 对象继承

  1、原型继承   将父类的实例赋值给子类的原型

          将父类的私有的和公有的都继承在子类的原型上,成为子类的公有属性

  2、call继承   将父类私有的继承子类私有的

    

  3、冒充对象    将父类私有的和公有的继承为子类私有的

    

  4、混合继承   私有的继承为私有的,公有的和私有的再次继承为公有的,call和原型继承的结合

    

  5、组合继承      私有的继承私有的      公有的继承为公有的

    

  6、中间类继承  

       

arguments 不是一个数组,没有array的那些自带的方法,现在我们想arguments有array的那些方法,将arguments的原型执行Array内置类的原型。

 

  

 

 

 

 

 

原文地址:https://www.cnblogs.com/gdqx/p/10251149.html