Есть ли способ вызвать Primitive в Javascript? - PullRequest
0 голосов
/ 30 сентября 2018

Есть ли способ вызвать toPrimitive для значения в Javascript?

Почему?

Я использую Proxy в своем проекте.

function makeProxy(unknown_value) {
    let proxy_target = ()=>{};
    proxy_target.inner = unknown_value;
    proxy_target.my_data = 123456;

    return new Proxy(proxy_target, some_proxy_handler);
}

let proxied_value = makeProxy(<? something unknown ?>);

Этот прокси перенаправляет все звонки на «внутренние».И в конце концов меня поразило что-то вроде этого:

console.log(1+proxied_value);

Здесь Javascript вызывает

(1)
proxied_value.get(proxy_target, Symbol.toPrimitive)

Поскольку Javascript хочет попытаться преобразовать proxied_value в некоторое значение, чтобы выполнить для него «+».И эта операция возможна для proxy_target.inner

Поэтому я хочу перенаправить этот вызов (1) на:

(something like)
Object.toPrimitive( proxy_target.inner );

Но я не нашел способа напрямую вызвать toPrimitive.Есть ли способ?

1 Ответ

0 голосов
/ 30 сентября 2018
 proxy_target[Symbol.toPrimitive]("number")

Внутри обработчика get вы можете просто использовать Reflect:

 get(...args) {
   // ...
   return Reflect.get(...args);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...