考完试咯,过几天就要去深圳上班了,就利用这几天的空窗期,放飞自我,努力刷书吧!
6.1 创建对象
6.1.1 对象直接量
6.1.2 new
6.1.4 Object.create()
创建一个新的对象,这个对象以第一个参数为原型。
6.2 属性的查询和设置
6.2.1 作为关联数组的对象
object[“property”]
JavaScript对象都是关联数组,也称作散列、映射或字典。
6.2.2 继承
6.2.3 属性访问错误
1)查询或给undefined或null设置属性
2)给对象的自有/继承只读属性重新赋值
3)给不可扩展对象的非自有属性赋值
6.3 删除属性
var a = {p: {x: 1}};
var b = a.p;
delete a.p;
console.log(b);
delete只是断开属性与宿主对象的联系,而不会去操作属性中的属性。上述代码已被删除的属性的引用依旧存在,造成了内存泄漏。
所在在销毁对象的时候,要遍历属性中的属性,依次删除。
var o = {x: 1};
delete o.x;
delete o.x;
delete o.toString;
delete 1;
delete Object.prototype;
// 成功删除x,返回true
// 无动作,返回true
// 无动作,返回true
// 无法删除继承属性,返回true
// 无意义,返回true
// 属性不可配置,删除失败,返回false
6.4 检测属性
in运算符
检测左操作数是否是右操作数的属性
hasOwnProperty方法
检测参数是否是调用对象的自有属性
propertyIsEnumerable方法
检测参数是否是调用对象的自有且可枚举的属性
6.5 枚举属性
6.6 属性getter与setter
在es5中,属性值可以用getter与setter替代。由这两个方法定义的属性称作“存取器属性”。相对的概念的是“数据属性”,后者只有一个值。
var o = {
// 普通的数据属性
data_prop: value,
// 存取器属性
get accessor_prop() {},
set accessor_prop() {}
}
6.7 属性的特性
四个特性
数据属性
1)值(value)
2)可写性(writable)
3)可枚举性(enumerable)
4)可配置性 (configurable)
存取属性
1)get
2)set
3)可枚举性(enumerable)
4)可配置性 (configurable)
查看对象特性
//查看对象object的x属性的属性描述符你
Object.getOwnPropertyDescriptor(object, "x");