命名函数
function check(){
//code
}
匿名函数
window.onload = function(){
//先获取元素对象,再绑定事件,绑定的是匿名函数不可重用
var btn = document.getElementById("btn");
btn.onclick = function(){
//code
}
}
以前一直以为两种方式的区别不大,直到今天遇到这段代码
//每次点击给图片地址后面加随机的查询参数
function change(){
this.src = "/path?num="+Math.random();
}
运行后发现,点击后src没有变化,调试发现,这里this是window对象,而不是img标签对象。
顿时感觉有点迷惑,因为以前绑定事件中,拿标签属性都是用的this,怎么这里不对了?
原来是我搞混了,两种绑定方式的区别。
命名函数声明是窗口的对象中,this代表窗口对象。
匿名函数声明实际是在标签对象内部,this代表标签对象。
如果要在命名函数中拿到对应的元素对象,可以这样写
function change(element){
element.value = "new_btn";
}