js学习笔记7

  1.   js 对象的定义: 一个无序属性的集合, 其属性可以包含基本值,对象或函数。
  2.   对象是一组没有特定顺序的值,可以把 js 对象想象成散列表。每个对象都是基于一个引用类型创建的。
  3.   js 属性类型:数据属性 和 访问器属性。
    1.   要修改数据属性 必须使用 Object.defineProperty("属性所在对象","属性名","描述符对象对象")
    2.   Object.getOwnPropertyDescriptor() 读取属性的特性。
  4.   创建对象的方式,工厂模式, 构造函数模式, 原型模式, 构造函数模式 + 原型模式。
    1.   工厂模式: 以函数来封装,以特定接口创建对象。 ( 工厂模式创建的对象 无法解决对象识别的问题,都只能识别为 Object)。
    2.   构造函数模式
      1.   this 对象,谁调用就指向谁。
      2.   创建自定义的构造函数
        1.   不会显示的创建对象。
        2.   直接将属性和方法赋值给 this 对象。
        3.   没有 return 语句。
      3.   要创建实例必须使用 new 操作符, 会有以下 4 个步骤
        1.   创建一个新对象。
        2.   将构造函数的作用域赋给新对象
        3.   执行构造函数中的代码
        4.   返回新对象,constructor 属性指向构造函数的对象。  constructor 属性是用来标识对象类型的。
      4.   使用构造函数的主要问题就是,每个方法都需要在每个实例上重新创建一遍,实现的都是同样的功能却每次都要重新创建。
    3.   原型模式
      1.   我们创建的每一个函数都有一个 prototype 属性。这个属性是一个指针,指向 一个原型对象。
      2.   这个原型对象的用途是包含可以由特定类型的所有实例共享的属性和方法。
      3.   原型模式创建的新的对象属性和方法都是共享的。
      4.   当代码读取某个对象的某个属性是,先在实例中搜索,在去原型对象中搜索。
      5.   可以通过对象实例访问保存在原型中的值,但是却不能通过对象实例重写原型对象中的值,如果在对象实例中添加和原型对象中同名的属性或者方法,就会屏蔽原型中的属性和方法。
      6.   可以使用 delete 操作符完全删除实例属性, 设置为 null 还是只能在实例中搜索
      7.   对象实例的指针是指向原型的而不是指向构造函数的
    4.   使用的创建对象模式 ( 构造函数模式 + 原型模式 )
      1.   构造函数模式用于定义实例属性,原型模式用于定义方法和共享的属性。
  5.   js 实现继承。 js 的集成主要是依靠原型链来实现的。
    1.   原型链方式: 利用原型链,让一个引用类型继承另一个引用类型的方法。 原理是 重写原型对象,将对象的 prototype 重写 为一个对象的实例。 SubType.prototype = new SuperType();
    2.   借用构造函数:在子函数内部调用父类的构造函数。 使用 call() 方法 或者 apply() 方法 修改执行链,将父类的属性和方法赋值给子类。
    3.   原型链方式 + 借用构造函数 :构造函数赋值属性,原型链赋值方法。
posted @ 2019-04-15 21:15  不要西红柿  阅读(105)  评论(0编辑  收藏  举报