刘小六
2016-09-12 22:08:59浏览 2550
对象:属性无序,key-value,key为字符串
1. 属性可以动态添加;对象有一个原型,prototype属性
2. 对象创建
1. 字面量
2. new构造器、原型链
1. prototype是一个对象属性
2. new构造的对象的原型会指向构造器的prototype属性
3. obj.z为undefined,可能是没有z属性,也可能z属性的值为undefined;可以通过in或者hasOwnProperty区分
4. 可以继承原型链上的属性,但不会修改
3. object.create()
3. 属性操作
1. 属性读写:点或者中括号或者for in
2. 属性读写异常:读undefined;写有则修改,无则创建
3. 属性删除:delete;属性不存在时也返回true
1. var创建的全局或者局部变量不能被删除;函数不能被删除
2. 隐式创建的全局变量可以被删除;delete window.onNo
4. 属性检测:in操作符(会搜索原型链); hasOwnProperty只查找对象本身
1. 是否可枚举:propertyIsEnumerable
2. defineProperty所有标签默认为false
5. 属性枚举:
4. getter/setter
5. 属性级的权限限制
6. 对象标签、序列化
1. proto
2. class
3. extensible;seal;freeze
4. 序列化:JSON.stringify(),如果属性的值为undefined时,该属性不会出现在序列化结果里;NaN,infinaty会转化为null
5. toString/valueof