• JS高级程序设计 第六章


    1.ECAM-262把对象定义为:无序属性的集合,其属性可以包含基本值.对象或者函数。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。
    2.数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有4个描述其行为特性。
    configurable:白叟能否通过delete删除属性从而重新定义属性,能佛修改属性的特性,或者把属性修改为访问器属性。其默认值是ture。
    enumerable:表示能否通过for-in循环返回属性。默认为ture。
    writable:表示能否修改属性的值。默认为ture.
    value:包含这个属性的数据值。读取属性值的时候,从这个位置读;写入属性值的时候,吧性质保存在这个位置。这个特性的默认值为undefined.
    3.访问器属性不包含数据值;他们包含一对儿getter和setter函数。访问器属性有如下四个特性:
    configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。对于直接在对象上定义的属性,这个特性的默认值为ture。
    emumerable:表示能否通过for-in循环返回属性。对于直接在对象上定义的属性,这个特性的默认值为ture。
    get:在读取属性是调用的函数。默认值为undefined
    set:在写入属性是调用的函数。默认值为undefined.
    访问属性不能直接定义,必须使用object.defineProperty()来定义。
    4.ES5定义了一个object.defineProperties()方法。可以为对象定义多个属性。
    5.ES5的object.getOwnPropertyDescriptor()方法。可以取得给定属性的描述符。
    这个方法接受两个参数:属性所在的对象和要读取器描述符的属性名称。
    6.虽然object构造函数或对象字面量都可以创建单个对象,但这些方式有个缺点:使用同一个接口创建对象,会产生大量的重复代码。为解决这个问题,人们开始使用工厂模式的一种变体。
    7.工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建对象的过程。(注:其主要思路就是先创建一个函数,带有几个需要创建对象及其属性,然后返回这个对象。并在函数外部运行该函数并对其赋值。这样便可以通过函数创建多个对象。)
    8.创建自定义的构造函数意味着将来可以将他的是咧标识为一种特定的类型。而构造函数与其他函数的唯一区别,就在于调用他们的方式不同。而构造函数的主要问题,就是每个方法都要在每个是咧上重新穿件一篇。
    9.我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。
    10.只要创建一个新函数,就会根据一组特定的规则为该函数穿件一个prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针。
    11.有两种方式使用in操作符:单独使用和for-in循环中使用。在单独使用时,in操作符会在同过对象能够访问给定属性是返回true。
    12.由于在原型其中查找值的过程是一次搜索,因此我们对原型对象所做的任何修改都能立即从实例上映射出来——及时是先创建看实例后修改原型也照样如此。
    13.所有原生的引用类型都是采用原型模式创建的.
    14.原型模式省略了为构造函数传递初始化参数这一环节,结果所有实例在默认情况下都将取得相同的属性值。
    15.创建自定义类型的最常见方式,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。
    16.寄生构造函数模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象。对于它来说,返回的对象与构造函数或者与构造函数的原型属性之间没有关系。
    17.稳妥构造函数模式,指的是没有公共属性,而且其方法也不会引用this的对象。这种方法适于在一些安全的环境中,或者防止数据被其他应用程序改动时使用。与寄生构造函数有两点不同:一是新创建对象的实例方法不引用this,二是不使用new操作符调用构造函数。
    18.对于继承而言,ES只支持实现继承,即继承实际的方法。
    19.原型链的基本思想是利用原型让一个应用类型继承另一个引用类型的属性和方法。
    20.在解决原型中包含应用类型值所带来问题的过程中,人们开始使用一种叫做借用构造函数的技术。这种基本思想是在子类型构造函数的内部调用超类型构造函数。
    21.相对于原型链而言,借用构造函数有一个很大的优势,即可以在子类型构造函数中向超累型构造函数传递参数。但借用构造函数中函数的复用也就无从谈起了。
    22.组合继承,指的是将原型链和借用构造函数的技术组合到一块。思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例函数的继承。
    23.寄生式继承,与原型式继承非常类似,也是基于某个对象或某些信息创建一个对象,然后增强对象,最后返回对象。为了解决组合继承模式由于多次调用超类型构造函数而导致的抵消了文体,可以将这个模式与组合继承一起使用。
    24寄生组合式继承,即寄生式和组合继承的优点与一身。即通过借用构造函数来调用超类型的构造函数,通过原型链的混成形式来继承方法。本质上,就是使用寄生式继承来继承超类型的原型,然后再将结果指定给子类型的原型。
  • 相关阅读:
    抽象工厂模式详解
    工厂方法模式详解
    简单工厂模式详解
    在IDEA中如何初始化Git,把项目推送到Git上
    Git报错解决:git@gitee.com: Permission denied (publickey).
    我为什么写博客?
    写什么样的博文
    Python装饰器的一点解读
    Python下将一般对象打印成Json
    众数的算法分析
  • 原文地址:https://www.cnblogs.com/srtain/p/6506312.html
Copyright © 2020-2023  润新知