gpt4 book ai didi

javascript - 是否可以代理原语(字符串、数字)?

转载 作者:行者123 更新时间:2023-12-05 03:37:41 24 4
gpt4 key购买 nike

我正在探索 JavaScript 中的代理,我想知道是否有任何方法可以使用 Proxy 原语。如果我尝试这样做:

new Proxy('I am a string');

它抛出 Uncaught TypeError: `target` argument of Proxy must be an object, got the string "I am a string"


我想这样做的原因是能够代理原语的原型(prototype)方法。我可以编辑原型(prototype),但编辑每个原语的每个原型(prototype)函数听起来不可行。

最佳答案

您可以通过将原始值包装在一个对象中来解决这个问题:

const proxy = new Proxy({ value: 'I am a string' }, {
get(target, prop, receiver) {
const prim = Reflect.get(target, 'value');
const value = prim[prop];
return typeof value === 'function' ? value.bind(prim) : value;
}
});

proxy.endsWith('ing');
// => true

proxy.valueOf();
// => 'I am a string'

'test ' + proxy;
// => 'test I am a string'

proxy[0];
// => 'I'

关于javascript - 是否可以代理原语(字符串、数字)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69195140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com