@@ -125,14 +125,17 @@ var WorkerMessenger = (function() {
125125 * @constructor
126126 */
127127 function WorkerMessenger ( port , receiverEventPreprocessor , senderEventPreprocessor ) {
128-
128+ if ( port === NOINIT ) return ;
129129 function postMessageHandler ( data , transferList ) {
130130 port . postMessage ( data , transferList ) ;
131131 }
132132
133133 MessagePortDispatcher . call ( this , port , postMessageHandler , receiverEventPreprocessor , senderEventPreprocessor ) ;
134134 }
135135
136+ WorkerMessenger . prototype = MessagePortDispatcher . createNoInitPrototype ( ) ;
137+ WorkerMessenger . prototype . constructor = WorkerMessenger ;
138+
136139 function setScopeHandlers ( source , target ) {
137140 WorkerEvent . createHandler ( Event . ERROR , source , target ) ;
138141 WorkerEvent . createHandler ( Event . LANGUAGECHANGE , source , target ) ;
@@ -145,11 +148,45 @@ var WorkerMessenger = (function() {
145148 function setAbstractWorkerHandlers ( source , target ) {
146149 WorkerEvent . createHandler ( Event . ERROR , source , target ) ;
147150 }
151+ function createNoInitPrototype ( ) {
152+ return new WorkerMessenger ( NOINIT ) ;
153+ }
154+
155+ WorkerMessenger . createNoInitPrototype = createNoInitPrototype ;
148156
149157 WorkerMessenger . setAbstractWorkerHandlers = setAbstractWorkerHandlers ;
150158 return WorkerMessenger ;
151159} ) ( ) ;
152160
161+ /**
162+ *
163+ * @param worker {String|Worker}
164+ * @param type {String}
165+ * @param receiverEventPreprocessor {?Function}
166+ * @param senderEventPreprocessor {?Function}
167+ * @extends WorkerMessenger
168+ * @constructor
169+ */
170+ function WorkerEventDispatcher ( worker , receiverEventPreprocessor , senderEventPreprocessor , type ) {
171+ if ( worker === NOINIT ) {
172+ Object . defineProperties ( this , {
173+ type : {
174+ value : type
175+ }
176+ } ) ;
177+ } else {
178+ Object . defineProperties ( this , {
179+ type : {
180+ value : WorkerType . DEDICATED_WORKER
181+ }
182+ } ) ;
183+ DedicatedWorkerEventDispatcher . call ( this , worker , receiverEventPreprocessor , senderEventPreprocessor ) ;
184+ }
185+ }
186+
187+ WorkerEventDispatcher . prototype = WorkerMessenger . createNoInitPrototype ( ) ;
188+ WorkerEventDispatcher . prototype . constructor = WorkerEventDispatcher ;
189+
153190/**
154191 *
155192 * @param worker
@@ -174,10 +211,10 @@ function ServerEventDispatcher(target, receiverEventPreprocessor) {
174211
175212 _target . addEventListener ( 'connect' , connectHandler ) ;
176213
177- this . addEventListener = _receiver . addEventListener ;
178- this . hasEventListener = _receiver . hasEventListener ;
179- this . removeEventListener = _receiver . removeEventListener ;
180- this . removeAllEventListeners = _receiver . removeAllEventListeners ;
214+ this . addEventListener = _receiver . addEventListener . bind ( _receiver ) ;
215+ this . hasEventListener = _receiver . hasEventListener . bind ( _receiver ) ;
216+ this . removeEventListener = _receiver . removeEventListener . bind ( _receiver ) ;
217+ this . removeAllEventListeners = _receiver . removeAllEventListeners . bind ( _receiver ) ;
181218
182219 WorkerMessenger . setScopeHandlers ( _target , _receiver ) ;
183220
@@ -187,10 +224,14 @@ function ServerEventDispatcher(target, receiverEventPreprocessor) {
187224 } ,
188225 target : {
189226 value : _target
227+ } ,
228+ type : {
229+ value : WorkerType . SHARED_WORKER_SERVER
190230 }
191231 } ) ;
192232}
193- ServerEventDispatcher . prototype = new WorkerEventDispatcher ( NOINIT , null , null , WorkerType . SHARED_WORKER_SERVER ) ;
233+
234+ ServerEventDispatcher . prototype = EventDispatcher . createNoInitPrototype ( ) ;
194235ServerEventDispatcher . prototype . constructor = ServerEventDispatcher ;
195236
196237/**
@@ -265,32 +306,6 @@ function DedicatedWorkerEventDispatcher(worker, receiverEventPreprocessor, sende
265306DedicatedWorkerEventDispatcher . prototype = new WorkerEventDispatcher ( NOINIT , null , null , WorkerType . DEDICATED_WORKER ) ;
266307DedicatedWorkerEventDispatcher . prototype . constructor = DedicatedWorkerEventDispatcher ;
267308
268- /**
269- *
270- * @param worker {String|Worker}
271- * @param type {String}
272- * @param receiverEventPreprocessor {?Function}
273- * @param senderEventPreprocessor {?Function}
274- * @extends WorkerMessenger
275- * @constructor
276- */
277- function WorkerEventDispatcher ( worker , receiverEventPreprocessor , senderEventPreprocessor , type ) {
278- if ( worker === NOINIT ) {
279- Object . defineProperties ( this , {
280- type : {
281- value : type
282- }
283- } ) ;
284- } else {
285- Object . defineProperties ( this , {
286- type : {
287- value : WorkerType . DEDICATED_WORKER
288- }
289- } ) ;
290- DedicatedWorkerEventDispatcher . call ( this , worker , receiverEventPreprocessor , senderEventPreprocessor ) ;
291- }
292- }
293-
294309WorkerEventDispatcher . WorkerEvent = WorkerEvent ;
295310WorkerEventDispatcher . WorkerType = WorkerType ;
296311WorkerEventDispatcher . CONNECT_EVENT = WorkerEvent . CONNECT ;
0 commit comments