【读书笔记】细读《JavaScript权威指南》(第六章: 对象)

考完试咯,过几天就要去深圳上班了,就利用这几天的空窗期,放飞自我,努力刷书吧!


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");

猜你喜欢

转载自blog.csdn.net/qq_29977681/article/details/80890537