Javascript 为什么我要从defineProperty方法中获得一个未定义的值?
我在这里面临的问题是,当我调用trapJavascript 为什么我要从defineProperty方法中获得一个未定义的值?,javascript,proxy,arrow-functions,Javascript,Proxy,Arrow Functions,我在这里面临的问题是,当我调用trapdefineProperty时,descriptor.value下定义的箭头函数不会被调用,会在底部返回true,并将属性的值设置为undefined 我很确定我没有正确使用箭头功能。有人能给我指引正确的方向吗 谢谢你给我的提示。非常感谢 有两个问题: 您只是将箭头函数分配给描述符.value。不叫它 实际上,您没有在任何地方设置属性 我认为这应该解决问题 var funcSetter={ 定义属性:函数(目标、属性、描述符){ 如果(道具){ 设temp
defineProperty
时,descriptor.value
下定义的箭头函数不会被调用,会在底部返回true,并将属性的值设置为undefined
我很确定我没有正确使用箭头功能。有人能给我指引正确的方向吗
谢谢你给我的提示。非常感谢 有两个问题:
var funcSetter={
定义属性:函数(目标、属性、描述符){
如果(道具){
设temp=descriptor.value;
//利用生命
descriptor.value=(临时=>{
if(温度启动带(“”“)){
返回“附加默认值,不允许使用下划线”;
}否则{
返回温度;
};
})(临时工);
}
//使用Reflect.defineProperty实际设置属性
返回Reflect.defineProperty(目标、属性、描述符);
}
};
设obj_3={};
设proxy_3=新代理(obj_3,functsetter);
Object.defineProperty(proxy_3,“no”{
值:“_Bharath”,
可写:对,
可枚举:正确,
可配置:true
});
控制台日志(obj_3)代码>请添加一些用例。这是我在学习JS中的代理和反射时尝试的东西。没有用例本身。defineProperty方法必须返回一个布尔值,指示属性是否已成功定义-是的,我知道,但当我尝试访问属性值“否”时,我没有定义。对不起,误读了您的代码:p生命的设计太过复杂。我同意。尝试以最少的修改更改OP的代码。一个普通的if..else
应该就足够了。我尝试了一个简单直接的方法来解决这个问题,但它让我感到困惑,为什么箭头函数方法不起作用。@MaazSyedAdeeb谢谢你的解决方案,我是IILife的新手。这种方法有什么潜在的优势吗?在你的情况下,我认为没有任何好处。IIFE只不过是一个在定义之后立即执行的函数。
var funcSetter = {
defineProperty: function(target, prop, descriptor) {
if (prop) {
let temp = descriptor.value;
descriptor.value = temp => {
if (temp.startsWith('_')) {
temp = "Default Value Attached , no Underscores allowed";
return temp;
} else return temp;
};
}
return true;
}
};
let proxy_3 = new Proxy(obj_3, funcSetter);
Object.defineProperty(proxy_3, 'no', {
value: '_Bharath',
writable: true,
enumerable: true,
configurable: true
});