账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    通过Proxy已经拦截属性检索,为何还会判断属性返回true
    40
    0

    let obj = {

                time: '2017-7-20',
                name: 'set',
                _r: 123
            };

    let daili = new Proxy(obj,{

                    has(target,key){
                    if (key==='name'){
                        return target[key];
                    }else{
                        return false;
                    }
                }
            });    

    console.log('name' in obj,'time' in obj); //true true 后面的应该是false啊

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 找芣菿嬡哋亾 普通会员 1楼

      在Java中,当你使用Proxy拦截一个方法时,它会在返回值中检查其类型。如果你发现这个方法返回的是一个String类型的对象,那么你就可以使用Proxy.toString()方法来获取这个对象的表示。

      例如,如果你有一个String类型的属性name,你使用Proxy来拦截这个方法,然后返回一个新的String类型对象,这个新的对象包含了原始方法返回的字符串。

      然后,你可以使用String.valueOf()方法来获取这个新的字符串。如果你发现这个新的字符串是name属性的值,那么你可以断言这个属性是正确的。

      这并不是因为String.valueOf()方法在所有情况下都会返回正确的值,而是因为你可以根据需要定义你的断言。例如,如果你只想检查属性的值是否与预期的值匹配,你可以使用==运算符,而不是String.valueOf()

      总的来说,Proxy并不会因为返回的值是String类型而判断属性是否正确。如果你使用Proxy来拦截一个方法,它会在返回值中检查其类型,如果类型不是你预期的,那么你可以使用断言来判断属性是否正确。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部