面向对象复习

                                                

                              面向对象复习

1.什么是对象?

  对象:任何实体都是对象,拥有属性和方法两大特征

  属性:描述事物的特点;

  方法:实物拥有的行为;

2.在JS中

  Person.name="zhang"

  Person.fn=function(){}

3.js中如何去生成对象

  (1)单例模式/字面量定义 var obj={name:"zhang"}

  (2)var obj=new Object() 内置类

      Obj.name="zhang"

      js内置的类 string array object number boolean  date function

  (3)工厂模式

      function create(){

        var obj={}

        Obj.name=

        return obj;

      }  

  (4)构造函数

      function Person(){

        this.name="li"

      }

      var zhang=new Person()

4.this的问题

    this是关键字,它是一个对象;

    函数外 this指向window

    函数内看带不带. 带.就是.前面的对象,不带.就是window

5.原型prototype

  每个函数 类天生自带一个prototype的属性,这个属性是个对象,它里面天生自带一个constructor的属性,属性值是当前函数/类本身;

  每个实例对象 天生自带一个__proto__的属性,这个属性是对象,它指向当前实例对象的类的原型

6.类的继承

  对象复制

    (1)通过for in 将父类的所有属性变成子类的私有属性

    (2)Object.create() 将父类的属性复制成子类公有的属性

  <1>原型继承

    将父类的实例赋值给子类的原型,父类实例的所有属性成了子类的公有属性

  <2>call继承 将父类私有的继承为子类私有的

    改变this指向的方法

    a.call() 

      fn.call(div,)将fn中的this换成div然后再把fn调用;

    b.apply()

    c.bind()

    d.提前声明;

   <3>冒充对象

      冒充对象继承利用for in  将父类的所有属性继承为子类私有的

   <4>混合继承 call继承和原型继承结合

     私有的继承为私有的,私有的和公有的再次继承为公有的

   <5>组合继承(寄生式继承)  call继承和克隆的结合

     <6>中间类继承  

      伪数组

   <7>拷贝继承

      浅拷贝

      深拷贝

        

        

原文地址:https://www.cnblogs.com/yuanjingjing/p/10380557.html