2016-3-24
2016-03-25 本文已影响7人
流离之人
ES5中的属性类型
- named data property 数据属性
- var obj = { name: 'mm'} name即为数据属性
- Object.getOwnPropertyDescriptor(obj,'name');
- named Accessor Property 访问属性
- var obj = {
get name () { return _name;}
set nmae (val) { _name=val}
} - 可以生成一个私有属性,当进行设置或者获取时,可以通过get,set控制。
- 当调试复杂代码时,通过访问属性,可以查看某个值得赋值过程
ES5新api
- *Object.getPrototypeOf(obj):获取隐式原型
- *Object.defineProperty(obj,'age',{}):
- 定义属性,更新属性
- 可以设置不可删除的常量
- *Object.create(o[,Properties]);
- Object.preventExtensions(obj):是否对象可以扩展
- Object.freeze(o):最强制的不可修改
- *Object.keys(o): 将o的所有keys遍历成一个数组,不会沿着原型链找到所有的key。而for in 方法会把原型链上的属性遍历到
- 在 for in时,要通过hasOwnProporty来判断是否为当前对象私有属性
严格模式
- 使用: "use strict"
- 通过 var fun = new Function()形成的函数代码,是不受外面的严格模式影响的
- 严格模式下,argumenst的实参和形参不共享值
- eval()下的变量不会再放在父级上
Promise
- promise.prototype.then([fn1[,fn2]])
- 都是可选的,第一个为成功执行的回调函数,第二个是失败执行的回调函数
- promise链
- promise.then返回的是一个新的promise对象
- onFullfilled,onRejected返回值类型
- 返回非thenable(非pormise对象)
p1的resolve和reject都返回到p2的resolve - 返回thenable(promise对象)
p1,p2这些promise对象绑定一起,进行同一处理 - 异常丢失
最好在最后加个catch方法,捕获异常
- 返回非thenable(非pormise对象)
- Promise.all([p1,p2]):都成功或失败
reference
- 只有函数才有激活对象 (AO)
- reference(参考引用):是用来解释this,typeof,delete相关的行为
- 图解