《JavaScript权威指南》笔记四

6 对象

6.1 创建对象

6.1.1 对象直接量

var point = { x:1,y:2};

6.1.2 new

var o = new Object();

6.1.3 原型

每一个js对象(除了null)都和另一个对象相关联
直接量创建的对象通过:Object.prototype 获取对原型的引用。

new创建的对象的原型和构造函数.prototype。如:new Array(),原型为Array.prototype。但同时也继承自Object.prototype。(原型链)

var a = {};
var b = new Object();
Object.prototype.name = function(){
console.log('my name is a');
};
a.name(); // my name is a
b.name(); // my name is a

6.1.4 object.create()

Object.create(args1, [args2]) 的原型:args1。args2可选

6.2 属性的查询和设置

object.property
object["property"] 方括号呃逆必须是一个计算结果为字符串的表达式。
继承
var u = {r:1};
var c = inherit(u);c继承属性r
c.x = 1;c.y = 2;
c.r = 3; c覆盖继承来的属性
console.log(c.r);//1 原型对象没有修改

6.3 删除属性

delete 删除对象的属性。只是断开属性和宿主对象的联系,不会操作属性中的属性

6.4 检测属性

in 、
hasOwnPreperty()、检测给定的名字是否是对象的自有属性。
propertyIsEnumerable() 只有对象的自有属性且可枚举
!== 判断一个属性是否是undefined,区分null和undefinend.

6.5 枚举属性

for/in可以在循环体中遍历对象中所有可枚举的属性(自有和继承属性),把属性名赋值给循环变量。
对象继承内部属性不可枚举,添加的属性可枚举。
ES5 两个枚举属性的方法
Object.keys() //返回数组
Object.getOwnPropertyNames() //返回数组,

6.6 属性getter 和setter

getter 和setter 属于存取器属性,不具有可写性
数据属性只有一个简单的值

var o = {
//数据属性
name: 'smy',
sex: '女',
//存取器属性
set operationSex (_sex) {
this.sex = _sex;
},
get operationSex () {
return this.sex;
}
}
console.log(o.sex);
console.log(o.operationSex);
o.operationSex = 'dhr';
console.log(o.sex);

6.7 属性的特性

一个属性包含一个值和四个特性
数据属性:值value, 可写性writable,可枚举 enumerable, 可配置configurable
存取器属性:读取get, 写入set, 可枚举enumerable, 可配置configurale

查看某个对象特定属性值
Object.getOwnPropertyDescriptor(obj, attr);
Object.getOwnPropertyDescriptor({x: 1,"x"}); //Object {value:1, writable: true, enumerable: true, configurable: true}
修改一个属性
Object.defineProperty(obj, attr, {})
同时修改多个属性
Object.defineProperties(obj, { attr1: {}, attr2: {} });

6.8 对象的三个属性

原型属性
isPrototypeOf()检测一个对象是否是另一个对象的原型 与instanceof 相似
类属性
classof
可扩展性
Object.esExtensible(obj) //判断该对象是否可扩展
Object.preventExtensions(obj) //转换为不可扩展 转换不可逆

6.9 序列化

JSON.stringify()、JSON.parse() 用来序列化和还原js对象。

6.10 对象方法

toString()

toLocaleString()

toJSON()

valueOf()

你可能感兴趣的:(《JavaScript权威指南》笔记四)