改变函数内部this的指向

  今天项目遇到一个问题,先上代码

1
2
3
4
5
6
son.city.li.onclick=function(){
updateResume(province_city[i].citys[j].id);
}
function updateResume(id){
console.log(this);//this指向了window
}

最近都没怎么用jquery,一直用的原生js,所以遇到了很多以前没遇到过的问题(正好可以熟练下js),’son.city.li’是动态创建的,原本是想给每个li都增加一个点击事件,然后点击后父级style的color变成红色;可是在updateResume函数内使用this.parentNode.style.color=’#ba3537’却一直不奏效,于是打印了一下this,发现指向了window(ps:本人js基础很渣渣,以前不知道:没有被绑定的对象,默认this 指向window 对象);于是百度了一下,知道了call()。
解决方案

1
2
3
4
5
6
7
son.city.li.onclick=function(){
//updateResume(province_city[i].citys[j].id);
updateResume.call(this, position12[i].position2[j].id);
}
function updateResume(id){
console.log(this);//this指向了son.city.li
}

改变函数内部this的指向
https://xypecho.github.io/2018/01/18/改变函数内部this的指向/
作者
很青的青蛙
发布于
2018年1月18日
许可协议