From a1976236d97c12ee2ba305d5a1cf435d16dd0c2e Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Wed, 11 Sep 2019 17:53:01 +0100 Subject: Default 'this' to window in EventTarget (#2918) --- js/event_target_test.ts | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'js/event_target_test.ts') diff --git a/js/event_target_test.ts b/js/event_target_test.ts index 34c486b9f..9d7e7974c 100644 --- a/js/event_target_test.ts +++ b/js/event_target_test.ts @@ -88,7 +88,7 @@ test(function constructedEventTargetUseObjectPrototype(): void { assertEquals(callCount, 2); }); -test(function toStringShouldBeWebCompatibility(): void { +test(function toStringShouldBeWebCompatible(): void { const target = new EventTarget(); assertEquals(target.toString(), "[object EventTarget]"); }); @@ -111,3 +111,32 @@ test(function dispatchEventShouldNotThrowError(): void { assertEquals(hasThrown, false); }); + +test(function eventTargetThisShouldDefaultToWindow(): void { + const { + addEventListener, + dispatchEvent, + removeEventListener + } = EventTarget.prototype; + let n = 1; + const event = new Event("hello"); + const listener = (): void => { + n = 2; + }; + + addEventListener("hello", listener); + window.dispatchEvent(event); + assertEquals(n, 2); + n = 1; + removeEventListener("hello", listener); + window.dispatchEvent(event); + assertEquals(n, 1); + + window.addEventListener("hello", listener); + dispatchEvent(event); + assertEquals(n, 2); + n = 1; + window.removeEventListener("hello", listener); + dispatchEvent(event); + assertEquals(n, 1); +}); -- cgit v1.2.3