关于Function.prototype.bindAsEventListener方法的解析

Function.prototype.bindAsEventListener=function(object){
     var __method=this;
     return function(event){
              __method.call(object,event||window.event);
    }
}

 

解构一下

//这是给Function原型增加一个bind方法,该方法挂一个参数<--强调的说。

Function.prototype.bindAsEventListener=function(object){...}


//在Function原型上增加prototype,则所有function()都能继续到这个方法。例如

function z();
alert(z.bindAsEventListener);


//做一个指针,指向Function<--请注重是Function而不是bindAsEventListener

var__method=this;

returnfunction(event){
         __method.call(object,event¦¦window.event);
}

//返回一个函数。请注重是返回一个函数而不是函数结果,否则函数内部并没有返回结果不就永远成了undefined了

 

call()要理解。这个说起来有点麻烦。举个例子:

 

var a={
        val_url:"http://www.baidu.com",
        run:function(val){
                alert(this.val_url+"____"+val)
           }
      }
varb={
       val_url:"http://blog.my400800.cn"
}

      a.run.call(b,"c");

//a的run方法召唤b来调用它,参数是"c"。b并没有run方法。相当于b.run=c.run;b.run("c");的这么过程。

 

根据bindAsEventListener字面意思,用上面这些代码写个例子

 

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>UntitledPage</title>
<scripttype="text/javascript">

Function.prototype.bindAsEventListener=function(object){
      var __method=this;
      return function(event){
            __method.call(object,event||window.event);
      }
}

</script>
</head>
<body>
<div id="test" style="background-color:#ccc;padding:20px;">aaaaaaaaaaaaaaaaaaaaaaa</div>

<script type="text/javascript">

//方便起见,重新封装getElementById。自然它也具备bindAsEventListener方法

function $(id){returndocument.getElementById(id);}

//定义一个事件监听方法

function show(){alert(arguments[0]);}

//获取Element

var div=$("test");

//绑定事件作为div的事件监听器,在onclick时触发假如使用addEventListener可绑定多个方法。

div.οnclick=show.bindAsEventListener(div);
</script>

</body>
</html>

 

在这个例子中,onclick触发show方法在binddiv后返回的一个方法,即function(event);

这个方法召唤div来实现__method方法,并以当前的事件作为参数传递过去。

__method.call(object,event||window.event);

 

前面强调过__method指向的是Function,在这里也就是实例show

show通过arguments[0]来获取传递过来的第一个参数,也就是event。所以,可以随意修改show并能简单第将这个方法绑定到每一个事件中。当然,假如采用addEventListener方法来绑定事件会更灵活。

简便的维护,简洁的代码,我想这就是这个bind方法的初衷。

1.4下多了个return我想没有太多奥妙,应该是方便show()返回值。

没用过prototype框架,也没有上下文,差不多就这意思吧。

 

内容概要:本文深入探讨了多种高级格兰杰因果检验方法,包括非线性格兰杰因果检验、分位数格兰杰因果检验、混频格兰杰因果检验以及频域因果检验。每种方法都有其独特之处,适用于不同类型的时间序列数据。非线性格兰杰因果检验分为非参数方法、双变量和多元检验,能够在不假设数据分布的情况下处理复杂的关系。分位数格兰杰因果检验则关注不同分位数下的因果关系,尤其适合经济数据的研究。混频格兰杰因果检验解决了不同频率数据之间的因果关系分析问题,而频域因果检验则专注于不同频率成分下的因果关系。文中还提供了具体的Python和R代码示例,帮助读者理解和应用这些方法。 适合人群:从事时间序列分析、经济学、金融学等领域研究的专业人士,尤其是对非线性因果关系感兴趣的学者和技术人员。 使用场景及目标:①研究复杂非线性时间序列数据中的因果关系;②分析不同分位数下的经济变量因果关系;③处理不同频率数据的因果关系;④识别特定频率成分下的因果关系。通过这些方法,研究人员可以获得更全面、细致的因果关系洞察。 阅读建议:由于涉及较多数学公式和编程代码,建议读者具备一定的统计学和编程基础,特别是对时间序列分析有一定了解。同时,建议结合具体案例进行实践操作,以便更好地掌握这些方法的实际应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值