|
|
|
|
|
by myfonj
533 days ago
|
|
Yes, I guess there could be some intention behind that, presumably some security precautions, but still: the fact that you can see $ in the globalThis (as a non-enumerable prop), and that globalThis you see from inside the timeout-ed function is strictly equal to globalThis seen directly from the console, that makes it somewhat spooky. console.log(Object.getOwnPropertyDescriptor(globalThis, '$'))
// {writable: true, enumerable: true, configurable: true, value: f}
globalThis.globalThat = globalThis
globalThat.$ === globalThis.$
// true
setTimeout(()=>console.log(globalThis.globalThat === globalThis))
// true
setTimeout(()=>console.log(Object.getOwnPropertyDescriptor(globalThis, '$')))
// undefined (!)
$ = $
setTimeout(()=>console.log(Object.getOwnPropertyDescriptor(globalThis, '$')))
// { writable: true, enumerable: true, configurable: true, value: f}
And it (`setTimeout(()=>{console.log(typeof $==="function")},0)`) works in Firefox. (Interestingly, you cannot get $'s descriptor in there, but you have it always available in timeout.) |
|