디자인 모델 에 관 한 면접 문제

1873 단어 면접 문제



	
		
		
	

	
		<script type="text/javascript">
			var Event = {
				//   on      eventName
				//     eventName   ,   callback    
				on: function(eventName, callback) {
					//         
					/*if(!this.obj){             
						this.obj={};         
					}  *///     1      
					if(!this.obj){
						Object.defineProperty(this,"obj",{
							enumerable:false,
							value:{}
						});
					}
					if(!this.obj[eventName]){	
						this.obj[eventName] = [callback];  
					}
					else{
						this.obj[eventName].push(callback);
					}
								
				},
				//      eventName
				emit: function(eventName) {
					//         
					if(this.obj[eventName]){
						for(var i=0; i<this.obj[eventName].length; i++){                 
							this.obj[eventName][i](arguments[1]);             
						}         
					}
				}
			};
			
			
			//   1
			Event.on('test', function(result) {
				console.log(result);
			});
			Event.on('test', function() {
				console.log('test');
			});
			Event.emit('test', 'hello world'); //    'hello world'   'test'
			
			
		
			//   2
			var person1 = {};
			var person2 = {};
			
			Object.assign(person1, Event);
			Object.assign(person2, Event);
			
			person1.on('call1', function() {
				console.log('person1');
			});
			
			person2.on('call2', function() {
				console.log('person2');
			});
			
			person1.emit('call1'); //    'person1'
			person1.emit('call2'); //     
			person2.emit('call1'); //     
			person2.emit('call2'); //    'person2'
			
			
			
		</script>
	


</code></pre> 
 </div> 
</div>
                            </div>
                        </div>

좋은 웹페이지 즐겨찾기