@@ -107,6 +107,10 @@ function validateMessagePort(port, name) {
107
107
throw new ERR_INVALID_ARG_TYPE ( name , 'MessagePort' , port ) ;
108
108
}
109
109
110
+ function isMessageEvent ( value ) {
111
+ return value != null && kData in value ;
112
+ }
113
+
110
114
class MessageEvent extends Event {
111
115
constructor ( type , {
112
116
data = null ,
@@ -131,19 +135,49 @@ class MessageEvent extends Event {
131
135
132
136
ObjectDefineProperties ( MessageEvent . prototype , {
133
137
data : {
134
- get ( ) { return this [ kData ] ; } , enumerable : true , configurable : true
138
+ get ( ) {
139
+ if ( ! isMessageEvent ( this ) )
140
+ throw new ERR_INVALID_THIS ( 'MessageEvent' ) ;
141
+ return this [ kData ] ;
142
+ } ,
143
+ enumerable : true ,
144
+ configurable : true ,
135
145
} ,
136
146
origin : {
137
- get ( ) { return this [ kOrigin ] ; } , enumerable : true , configurable : true
147
+ get ( ) {
148
+ if ( ! isMessageEvent ( this ) )
149
+ throw new ERR_INVALID_THIS ( 'MessageEvent' ) ;
150
+ return this [ kOrigin ] ;
151
+ } ,
152
+ enumerable : true ,
153
+ configurable : true ,
138
154
} ,
139
155
lastEventId : {
140
- get ( ) { return this [ kLastEventId ] ; } , enumerable : true , configurable : true
156
+ get ( ) {
157
+ if ( ! isMessageEvent ( this ) )
158
+ throw new ERR_INVALID_THIS ( 'MessageEvent' ) ;
159
+ return this [ kLastEventId ] ;
160
+ } ,
161
+ enumerable : true ,
162
+ configurable : true ,
141
163
} ,
142
164
source : {
143
- get ( ) { return this [ kSource ] ; } , enumerable : true , configurable : true
165
+ get ( ) {
166
+ if ( ! isMessageEvent ( this ) )
167
+ throw new ERR_INVALID_THIS ( 'MessageEvent' ) ;
168
+ return this [ kSource ] ;
169
+ } ,
170
+ enumerable : true ,
171
+ configurable : true ,
144
172
} ,
145
173
ports : {
146
- get ( ) { return this [ kPorts ] ; } , enumerable : true , configurable : true
174
+ get ( ) {
175
+ if ( ! isMessageEvent ( this ) )
176
+ throw new ERR_INVALID_THIS ( 'MessageEvent' ) ;
177
+ return this [ kPorts ] ;
178
+ } ,
179
+ enumerable : true ,
180
+ configurable : true ,
147
181
} ,
148
182
} ) ;
149
183
0 commit comments