四 、对象的拓展
4.1 Object.preventExtensions
取消对象可拓展性
作用:
用于取消对象的可拓展性
1 | // 定义对象 |
总结:
当取消了对象的可拓展性,仍然可以修改属性值,或删除属性
查看对象是否取消可拓展性:
Object.isExtensiable(obj) 返回值:true | false
1 | // 查看对象的可拓展性是否被取消 |
4.2 Object.seal 封闭对象
作用:
用于封闭对象
1 | // 定义对象 |
总结:
封闭之后,对象可以被访问,不能拓展,不能删除,可以修改属性值
查看对象是否被封闭:
Object.isSealed(obj); 返回值:true | false
1 | // 查看对象是否被封闭 |
4.3 Object.freeze
冻结
作用:
冻结对象
1 | // 定义对象 |
总结:
当对象冻结之后,不能添加属性,不能删除属性,不能修改属性值
查看对象是否被冻结:
Object.isFrozen(obj); 返回值:true | false
4.4 对象创建的新方式Object.create(prototype, options)
使用方式:
1 | Object.create(prototype, options); |
4.4.1 不传递参数
1 | // 原有方式 |
4.4.2 参数为null
1 | var obj2 = Object.create(null); |
4.4.3 原型对象为null
,特性对象正常添加
1 | var obj3 = Object.create(null, { |
4.4.4 只传递第一个参数且不为null
1 | var obj4 = Object.create({ |
4.4.5 传递原型对象和特性对象
1 | // 创建原型对象 |
4.4.6 使用Object.create
继承
4.4.6.1 使用类式继承
1 | // 定义父类 |
4.4.6.2 使用Object.create
只传递原型对象,不需要特性对象:
1 | // 原本 |
4.4.7 模拟Object.create
方法
1 | // 取消Object.create方法 |