diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2021-07-03 16:58:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-03 16:58:08 +0200 |
commit | 6137c8046d2d1bf4145a72aa634270c7aaf23341 (patch) | |
tree | 85428d5bb447b7e17323b4d6187e7b4124d17d68 /runtime/js/01_web_util.js | |
parent | d4de477ef903e2e47c6427e14f0fe543106b1297 (diff) |
refactor: use primordials in runtime/, part1 (#11241)
Diffstat (limited to 'runtime/js/01_web_util.js')
-rw-r--r-- | runtime/js/01_web_util.js | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/runtime/js/01_web_util.js b/runtime/js/01_web_util.js index 11294a9bb..4a9825fa1 100644 --- a/runtime/js/01_web_util.js +++ b/runtime/js/01_web_util.js @@ -2,6 +2,15 @@ "use strict"; ((window) => { + const { + FunctionPrototypeCall, + Map, + MapPrototypeGet, + MapPrototypeSet, + ObjectDefineProperty, + TypeError, + Symbol, + } = window.__bootstrap.primordials; const illegalConstructorKey = Symbol("illegalConstructorKey"); function requiredArguments( @@ -23,29 +32,34 @@ if (typeof wrappedHandler.handler !== "function") { return; } - return wrappedHandler.handler.call(this, ...args); + return FunctionPrototypeCall(wrappedHandler.handler, this, ...args); } wrappedHandler.handler = handler; return wrappedHandler; } function defineEventHandler(emitter, name, defaultValue = undefined) { // HTML specification section 8.1.5.1 - Object.defineProperty(emitter, `on${name}`, { + ObjectDefineProperty(emitter, `on${name}`, { get() { - return this[handlerSymbol]?.get(name)?.handler ?? defaultValue; + if (!this[handlerSymbol]) { + return defaultValue; + } + + return MapPrototypeGet(this[handlerSymbol], name)?.handler ?? + defaultValue; }, set(value) { if (!this[handlerSymbol]) { this[handlerSymbol] = new Map(); } - let handlerWrapper = this[handlerSymbol]?.get(name); + let handlerWrapper = MapPrototypeGet(this[handlerSymbol], name); if (handlerWrapper) { handlerWrapper.handler = value; } else { handlerWrapper = makeWrappedHandler(value); this.addEventListener(name, handlerWrapper); } - this[handlerSymbol].set(name, handlerWrapper); + MapPrototypeSet(this[handlerSymbol], name, handlerWrapper); }, configurable: true, enumerable: true, |