书是 15 年出了第一版,22 年才开始看,内容比较偏基础,而且内容比较旧,现在已经出了 ES6+了,但里面最新的就是 ES5 相关的内容了,但还是有看的价值的,简单记录下自己已经遗忘或者学到的东西~
可总结:
-
如何去创建一个对象?
-
如何去遍历对象的属性?
-
prototype 和 constructor 的区别
-
继承的方式有哪些?
学到的东西:
- object 属性探测,不要用 if 判断,容易误判,使用 in 操作符 或 hasOwnProperty 方法
- in 会检查「自有属性」和「原型属性」
- hasOwnProperty 会检查「自有属性」
- 遍历对象的属性,可使用 for-in 或 Object.keys
- for-in 会同时遍历原型属性
- Object.keys 只返回自有属性
- 改变属性特征,使用 Object.defineProperty 方法
- enumerable:是否可枚举
- writable:是否可改写
- configurable:是否可配置
- 禁止修改对象
- 禁止扩展:Object.preventExtensions() 创建一个不可扩展的对象
- 对象封印:Object.seal() 不可添加/删除属性,不能改变属性类型,但可以读写属性
- 对象冻结:Object.freeze() 不可添加/删除属性,不能改变属性类型,也不能写入任何数据类型
- Object.create(null) 可以创建出一个没有原型对象的对象,该对象完全就是一个没有任何预定义属性的白板,这使得它成为一个完美的哈希容器,因为不会发生和继承来的属性名字的冲突。
- 子类提供新功能覆盖父类的方法十分常见,但如果还想访问父类的方法该怎么办呢?
- 父类.prototype.方法.call(this)
- 如何创建私有成员
-
模块模式:使用立调函数表达(IIFE)来返回一个对象。意味着这个函数仅存在于被调用的瞬间,一旦执行后立即就被销毁了
var yourObject = (function(){ // private data variables return { // public methods and properties } }(); -
构造函数的私有成员
-
- 混入
- 作用域安全的构造函数