虽然以前一直都知道js可以绑定事件,但当时一直觉得在js文件里绑定只是不在html写onclick、ondbclick等属性而已,那样就是让html代码看起来更干净一点而已。然而实际不然,这个绑定可以实现一个很强大的功能,那就是传递作用域。这个作用与闭包类似,但实现起来更加的方便,见下面代码:
$.userArray = []//全局变量
this.tree = {};
var a = document.createElement("a");
$(a).attr("href","javascript:void(0);");
$(a).attr("class","userlist_delete");
$(a).html("删除");
$(a).bind('click'{name:names[i],tree:this.tree,number:numberArray[i]},function(e){
$.userArray = [1];
e.data.tree....
});// click end
当这个浏览器网页加载完成时,这个A元素也显示完成。但是其click事件内的$.userArray(一个全局变量)的作用域还是有效的,我们通过单击“删除”链接,来实现动态修改
$.userArray变量的目的,这个功能其实相当强大。
需要注意的是,上面的代码中的this.tree这个this不能直接在click事件的回调函数中使用,而必须通过参数的形式把传进去才可以使用。
最近发现,JS的功能还真是强大 ,比如反射,用JAVA使用起来比较麻烦,而用JS相对来说容易多,比如访问对象属性,除了用object.name这种方式外,还可以用object["name"]这种方式,而用JAVA来实现这种字符串的方式访问属性会比较麻烦。通过字符串的方式访问属性可以实现手动指定访问哪个属性,在做比较复杂的JS应用时,还是相当有用的 。