面向对象

封装

  1. 封装函数,写入参数,然后return出去
  2. 构造函数,内部使用this变量,通过使用new运算符生成实例,实例对象的constructor属性指向他们的构造函数
  3. prototype,把那些不变的属性和方法直接定义在prototype对象上,每一个构造函数都有一个prototype属性,指向另外一个对象,这个对象的所有属性和方法都会被构造函数的实例所继承。

 

  • instanceof运算符 用于验证原型对象与实例对象之间的关系;
  • hasOwnProperty('属性')方法  用于判断某一个属性到底是本地属性还是继承自prototype对象的属性;
  • in运算符 用于判断某个实例是否含有某个属性,不管是不是本地属性,,,,,还可以用于遍历某个对象的所有属性。 for in。

构造函数的继承

对象之间的‘继承方法’

  1. 构造函数的绑定,通过call或apply方法
  2. prototype模式,A的原型对象指向B的实例,A则可以继承B
  3. 直接继承prototype,A的原型对象指向B的原型,(优:效率较高,省内存;缺:A的原型修改会反映到B的原型)
  4. 利用空对象作为中介,B的原型指向C的原型,A的原型指向B的实例
  5. 拷贝继承,将B的原型的属性和方法循环遍历赋给A的原型
  • 任何一个原型对象都有一个constructor属性,指向它的构造函数
  • 每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性
  • 如果替换的A的原型对象 则必须为新的原型对象加上constructor属性,并将这个属性指回原来的构造函数

非构造函数的继承

  1. object函数  即把子对象的prototype属性指向父对象
  2. 浅拷贝 把父对象的属性全部拷贝给子对象
  3. 深拷贝
  • 浅拷贝会出现问题,如果父对象的属性为数组或者另外一个对象,那么实际上子对象获得的只是一个内存地址,而不是真正拷贝

参考文章:

原文地址:https://www.cnblogs.com/fire-passiontao/p/5938923.html