在JavaScript中,Proxy对象是用于创建一个对象的代理,可以拦截并定义基础操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。
如果你想要获取Proxy对象代理的长度,你需要确保你的代理对象有一个length属性。这是因为当你访问一个对象的属性时,如果该对象没有这个属性,JavaScript会尝试通过原型链查找这个属性。如果原型链上也没有这个属性,那么返回的值就是undefined。
在你的例子中,你提到".value.length"和".value.length"都能取到值,但是".value.length"取到的值是0。这可能是因为".value"本身就是一个Proxy对象,它的长度被设置为0。
如果你想获取Proxy对象代理的长度,你需要确保你的代理对象有一个length属性。以下是一个示例代码:
let obj = {
value: new Proxy({}, {
get(target, prop) {
if (prop === 'length') {
return target.length;
}
return Reflect.get(target, prop);
}
})
};
console.log(obj.value.length); // 输出:10
在这个例子中,我们创建了一个新的Proxy对象,代理了一个空对象。当我们试图获取"length"属性时,代理对象会返回原始对象的长度。
标签:对象,代理,value,取到,length,Proxy,长度,属性 From: https://blog.51cto.com/M82A1/7397181