答网友问~


window.onload = function(){
       //简单模拟的一个例子,不完善,指在模拟ext的监听中的回调参数是怎么传值的
	   var Component = function(){
	    //内部处理...
		var tempA = '第一个参数对象';
		var tempB = '第二个参数对象';

		var resultObj = {
			/**
			 * 添加事件监听方法
			 * @params {String} name 时间名称
			 * @params {Function} fn 监听处理回调函数
			 * @params {Object} scope 作用域
			 */
		    addListener:function(name,fn,scope){
			     //模拟的事件监听(Ext具体实现不是这样的,模拟它监听里的回调,顺便讲下它的参数怎么传的)
				 if('load'){
				       fn.call(scope||this,tempA,tempB);//这些回调参数都是内部变量,因此你无法改变这些传递的参数,但可扩展这些方法~使这些方法符合自己的需求
				 }
			}
		};
		return resultObj;
	}
	var com = new Component();
    var com1 = new Component();
	var com2 = new Component();
    var testThis = {
	    testFn:function(){
		   alert('测试');
		}
	};

    com.addListener('load',function(a,b){
	     alert(a+b);
		 this.testFn();
	},testThis);
	//这个scope指向了testThis,因此回调里可以使用this.方法名()的形式,但如下则不可
	com1.addListener('load',function(a,b){
	     alert(a+b);
		 //this.testFn();
	});
	com2.addListener('load',function(a,b){
	     //this.testFn();
	},this);//...等等,这里要理解作用域和this的概念
    //但这样却可以,可是加上var 却不可以~~ so  你先理解上述概念再说。
	testFn2 = function(){
	   alert('测试2');
	}
	com2.addListener('load',function(a,b){
	     this.testFn2();
	},this);
}

讲解和代码混合在一块了,仔细阅读讲解,希望能懂。 不懂请看书.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值