get属性
get属性是在你得到某对象属性值时预处理的方法,他接受三个参数
- target:得到的目标值
- key:目标的key值,相当于对象的属性
- property:这个不太常用,用法还在研究中,还请大神指教。
set属性
set属性是值你要改变Proxy属性值时,进行的预先处理。它接收四个参数。
- target:目标值。
- key:目标的Key值。
- value:要改变的值。
- receiver:改变前的原始值。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>用Proxy进行预处理声明周期. 与promise对象的使用--回调函数</title>
</head>
<!--<script type="text/javascript" src="js/es6.js" ></script>-->
<body>
</body>
<script>
/*
var obj={
add:function(val){
return val+10;
},
name:'I am Jspang'
};
var pro = new Proxy({
add: function (val) {
return val + 10;
},
name: 'I am Jspang'
}, {
//预处理先执行get 然后在执行name
get:function(target,key,property){
console.log(key);
console.log('come in Get');
return target[key];
},
//set修改值 要添加返回值
set:function(target,key,value,receiver){
console.log(`setting ${key} = ${value}`);
return target[key]=value;
}
},
);
console.log(pro.name);
pro.name='技术胖';
console.log(pro.name);
*/
//预处理.生命周期
/*
let target = function(){
return 'I am jspang'
}
let handler={
apply(target,ctx,args){
console.log('do apply');
return Reflect.apply(...arguments);
}
}
let pro=new Proxy(target,handler);
console.log(pro());
*/
//promise 回调函数1,洗菜做饭 2,坐下来吃饭 3,收拾桌子
let state=1;
function step1(resolve,reject){
console.log('1,开始洗菜做饭');
if(state==1){
resolve('洗菜做饭完成')
}else{
reject('洗菜做饭出错');
}
};
function step2(resolve,reject){
console.log('2,开始坐下来吃饭');
if(state==1){
resolve('坐下来吃饭完成')
}else{
reject('坐下来吃饭出错');
}
};
function step3(resolve,reject){
console.log('3,开始收拾桌子');
if(state==1){
resolve('收拾桌子完成')
}else{
reject('收拾桌子出错');
}
};
new Promise(step1).
then(function(val){
console.log(val);
return new Promise(step2);
}).
then(function(val){
console.log(val);
return new Promise(step3);
}).
then(function(val){
console.log(val);
})
</script>
</html>