首页 > 解决方案 > 代理仅在尝试返回不同值时通过 get 方法返回目标

问题描述

每次通过 get 方法调用代理时,我都试图只给用户字符串“Hello”。相反,我得到一个空对象,这是我的目标。

我尝试使用 String、Reflect 等类,但没有得到积极的结果

let proxy = new Proxy({},{
    get: function ()
    {
         return "Hello"
    }
})


console.log(proxy)

预期:“你好”
结果:{}

标签: javascriptecmascript-6proxyes6-proxy

解决方案


每次通过 get 方法调用代理时。

这不是get陷阱的用途。该方法将处理属性访问,而不是代理本身的访问。您的(代理)对象没有任何属性,它们没有被访问,所以您看到的只是空对象。

请参阅get此处的陷阱:

const proxy = new Proxy({},{
    get: function () {
         return "Hello"
    }
})
console.log(proxy.someProperty, proxy.really, proxy.anything)
console.log(proxy)

我试图只给用户字符串“Hello”

那是不可能的。代理始终是一个对象。它不能伪装成原始字符串。


推荐阅读