Bir işlev proxy'sinde .toString() öğesini çağırmaya çalışıyorum.İşlev Proxy .toString() Hatalar
Sadece bir işlev vekilinin yaratılması ve toString çağrılması, "TypeError: Function.prototype.toString jenerik değil" nedeniyle, "RangeError: Maksimum çağrı yığını boyutu aşıldı" şeklindeki orijinal nedenlerin kaynağını döndürmek için toString öğesinin ayarlanması, ancak bir toString işleri için tuzak olsun.
toString işlevini ayarlamak neden işe yaramıyor, ancak bir tuzak oluşturuyor?
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()
related: https: // esdiscuss. org/topic/call-tostring-on-function-proxy-throws-typeerror-exception – tybro0103
Bağlantısız: 'return' bir anahtar sözcüktür, kendi başına bir işlev değildir, bu yüzden' return x' 'return (x)' değil. Parens burada hiçbir şey yapmıyor. – Albin