0
点赞
收藏
分享

微信扫一扫

关于es6的reflect与object


object自身的方法
constructor: ƒ Object()
hasOwnProperty: ƒ hasOwnProperty()
isPrototypeOf: ƒ isPrototypeOf()
propertyIsEnumerable: ƒ propertyIsEnumerable()
toLocaleString: ƒ toLocaleString()
toString: ƒ toString()
valueOf: ƒ valueOf()
defineGetter: ƒ defineGetter()
defineSetter: ƒ defineSetter()
lookupGetter: ƒ lookupGetter()
lookupSetter: ƒ lookupSetter()
get proto: ƒ proto()
set proto: ƒ proto()
新增reflect的方法
apply: ƒ apply()
construct: ƒ construct()
defineProperty: ƒ defineProperty()
deleteProperty: ƒ deleteProperty()
get: ƒ ()
getOwnPropertyDescriptor: ƒ getOwnPropertyDescriptor()
getPrototypeOf: ƒ getPrototypeOf()
has: ƒ has()
isExtensible: ƒ isExtensible()
ownKeys: ƒ ownKeys()
preventExtensions: ƒ preventExtensions()
set: ƒ ()
setPrototypeOf: ƒ setPrototypeOf()
proto: Object虽然用reflect代替Object操作object类型,但是也是原型也是指向Object
还有与reflect结合使用的proxy代理新属性
let prp=new Proxy(函数或者对象,handle)
handle也是核心内容
是代理使用函数与对象的额外操作,也可以说是一种拦截

let handle={
apply:function(){
console.log(123)
return Reflect.apply(…arguments)//函数拦截
},
has:function(tar,key){//判断属性
return key in tar
},
set: function(obj, prop, value, receiver) {//设置属性
obj[prop] = receiver;
},
get: function(target, key) {//获取属性
console.log('getting '+key);
return target[key]; // 不是target.key
},
construct: function (target, args, newTarget) {//构造函数 注意constructor这是获取代码然后实例化之后才是construct
console.log(‘handle construct’)
return Reflect.construct(target, args, newTarget)
},
defineProperty: function(target, propKey, propDesc){//修改或者创建属性,如果是属性创建,同时存在第四个函数就会转移this
console.log(“handle defineProperty”);
return false;
},
getOwnPropertyDescriptor: function(target, propKey){//获取对象自身属性
return Object.getOwnPropertyDescriptor(target, propKey);
},
getPrototypeOf: function(target){//获取对象原型
return exam;
},
isExtensible:function(target){
return true;
}
}

举报

相关推荐

0 条评论