call/apply方法作用是将 某对象的某个方法置于某种环境下执行。
如下面的例子,在window.onload事件下执行 checkme.init方法,设定方法执行环境为checkme(checkme.init.apply(checkme);) ,在init方法中,给link添加onclick事件时,首先需要 var _self = this;
,然后将checkMe.sayGoodbye方法置于link.onclick上,同时需要设定checkMe.sayGoodbye的执行环境
(_self)。
执行结果,点击link时,先提示,而不是跳转。
说明:在 对象的事件方法时候,需要先设定事件方法的执行环境(其实就是执行下call/apply方法,返回匿名函数)。
<script type="text/javascript"> <!-- function checkMe(){ this.msg = "这是测试"; }; checkMe.prototype={ sayGoodbye:function(msg) { return confirm(this.msg + msg); }, init:function(){ var link = document.getElementById('ha'); var _self = this; link.onclick = function(){ _self.sayGoodbye.call(_self,'abc'); } } }; var checkme = new checkMe(); window.onload = function(){ checkme.init.apply(checkme); } //--> </script> <a href="javascript:void(0)" id=ha> aaaaa</a>