javascript 代理在尝试返回不同值时仅通过get方法返回目标

k4emjkb1  于 2023-06-04  发布在  Java
关注(0)|答案(2)|浏览(163)

我尝试在每次通过get方法调用代理时,只给予用户字符串“Hello”。相反,我得到一个空对象,这是我的目标。
我尝试过使用String、Reflect等类,但没有得到任何积极的结果

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

console.log(proxy)

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

ds97pgxw

ds97pgxw1#

每次通过get方法调用代理时。
这不是get陷阱的用途。该方法将处理 * 属性访问 *,而不是代理本身的访问。你的(代理)对象没有任何属性,它们不会被访问,所以你看到的只是一个空对象。
在这里查看get陷阱的操作:

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

我尝试只给予用户字符串“Hello”
这不可能代理始终是一个对象。它不能伪装成原始字符串。

inn6fuwd

inn6fuwd2#

如果你把它转换成字符串就有可能

let proxy = new Proxy({},{
    get: function ()
    {
         return () => "Hello" // Proxy Symbol.toPrimitive
    }
})
console.log(String(proxy), proxy == 'Hello')

相关问题