関数プロキシで.toString()を呼び出そうとしています。関数プロキシ.toString()エラー
単純に関数プロキシを作成してtoStringを呼び出すと、 "TypeError:Function.prototype.toStringが汎用ではありません"が発生し、元のソースを返すようにtoStringを設定すると "RangeError:最大呼び出しスタックサイズを超えました" toStringのトラップを取得します。
なぜ単純にtoString関数を設定しても動作しませんが、getトラップを行うのはなぜですか?
function wrap(source) {
return(new Proxy(source, {}))
}
wrap(function() { }).toString()
function wrap(source) {
let proxy = new Proxy(source, {})
proxy.toString = function() {
return(source.toString())
}
return(proxy)
}
wrap(function() { }).toString()
function wrap(source) {
return(new Proxy(source, {
get(target, key) {
if(key == "toString") {
return(function() {
return(source.toString())
})
} else {
return(Reflect.get(source, key))
} } })) }
wrap(function() { }).toString()
ます。https:// esdiscuss。 – tybro0103
無関係: 'return'はキーワードであり、それ自身の関数ではないので、' return x'ではなく 'return(x)'です。 parensはここで何もしません。 – Albin