Я хочу что-то сделать при создании строки, например:
String = new Proxy(String, {
construct: (t, a) => {
return { a: 123 }
}
})
console.log(new String('q')) // { a: 123 }
Однако, если вы используете примитивы, это не сработает.
String = new Proxy(String, {
construct: (t, a) => {
return { a: 123 }
}
})
console.log('1') // Expected: { a: 123 }, Actual: 1
Есть ли Кстати?
тогда второй вопрос, когда среда выполнения преобразует примитивы, могу ли я прокси процесс?
var a = '123' // This is a primitive
console.log('123'.substring(0,1)) // Actual: 1
// The runtime wraps the primitive as a String object.
// then uses a substring, and then returns the primitive.
сейчас:
String = new Proxy(String, {
construct: (t, a) => {
return { a: 123 }
},
apply: (target, object, args) => {
return { a: 123 }
}
})
console.log('1'.a) // Expected: 123 , Actual: undefined
Я знаю, что могу добавьте 'a' к прототипу String для достижения ожидаемых результатов.
Но я хочу иметь возможность прокси-доступа к произвольным атрибутам для примитивов. ('1'.*
, не JSUT '1'.a
)
Есть ли способ?
Спасибо за ваш ответ.