码迷,mamicode.com
首页 > Web开发 > 详细

js高程笔记6章

时间:2016-08-07 22:59:55      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

第6章

1.ES有两种属性:数据属性和访问器属性。属性中包含各种特性,表示属性的各种特征。

数据属性:[[Configurable]],[[Enumerable]],[[Writable]],[[Value]]

  修改属性使用方法:Object.defineProperty()

访问器属性:[[Configurable]],[[Enumerable]],[[Get]],[[Set]]

  访问器属性不包含数值。只能通过Object.defineProperty()定义。通过设置set和get函数,分别设置读取和写入的时候的行为。P141

2.属性的特性的其他方法:

Object.defineProperties()设置多个属性和其特性

Object.getOwnPropertyDescriptor()读取属性的特性

3.创建对象的模式:

4.工厂模式:解决了重复代码问题,但无法识别对象类型

5.构造函数模式:能够识别对象类型,但每个方法都要在实例上重新创建一遍。不同实例上的同名函数不等。

  一个函数通过new来调用就是构造函数,直接调用就是普通函数。

6.原型模式:不必在构造函数中定义对象实例的信息,而是将这些信息直接添加到原型对象中,让所有对象实例共享它包含的属性和方法。

  原型对象:(1)创建新函数时,同时创建函数的prototype属性,指向该函数的原型对象。

       (2)原型对象生成一个constructor属性,指向原型所在函数。

       (3)调用构造函数创建新实例,实例内部包含一个指针[[prototype]],指向原型对象

  原型对象的方法:Object.prototype.isPrototypeOf(实例),Object.getPrototypeOf(实例),实例.hasOwnProperty(属性),Objet.key(实例or原型),Object.getOwnPropertyNames(实例或原型)

  如果在调用构造函数创建一个实例后,重写原型对象,那么实例的[[prototype]]无法指向新的原型对象。P156

  原型模式弊端:所有实例拥有相同属性值,由于共享,实例1的修改会在实例2中体现出来

7.组合使用构造函数模式和原型模式:将属性定义在构造函数中,原型定义方法和需要共享的属性

8.动态原型模式:当方法不存在时,就在原型创建方法

9.寄生构造函数模式:在构造函数中创建新对象,再返回该对象。

  构造函数在不返回值的时候,默认会返回新对象实例。通过在构造函数的末尾添加一个return,可以重写调用构造函数返回的值。

10.稳妥构造函数模式:避免使用this和new,某些属性值只有通过唯一的方法才能访问。

js高程笔记6章

标签:

原文地址:http://www.cnblogs.com/little-jelly/p/5747341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!