javascript中this指向的处理是令大家普遍头疼的问题,这里我们举一个实例讲解javascript中的this指向错误解决方法,需要的朋友可以参考下
看如下对象定义:
'use strict'
var jane = {
name : ‘Jane',
display : function(){
retrun 'Person named ' + this.name;
}
};立即学习“Java免费学习笔记(深入)”;
这样能正常调用
jane.display();
立即学习“Java免费学习笔记(深入)”;
下面的调用会出错:
var func = jane.display; func()
立即学习“Java免费学习笔记(深入)”;
TypeError: Cannot read property 'name' of undefined
立即学习“Java免费学习笔记(深入)”;
因为,this指向已经改变,正确的方式如下:
var func2 = jane.display.bind(jane); func2()
立即学习“Java免费学习笔记(深入)”;
'Penson named Jane'
立即学习“Java免费学习笔记(深入)”;
所有函数都有其特殊的this变量,如下面的forEach
var jane = {
name : 'Jane',
friends: ['Tarzan', 'Cheeta'],
sayHiToFriends: function(){
'use strict';
this.friends.forEach(function(friend) {
// 'this' is undefined here
console.log(this.name + ' says hi to '+ friend);
});
}
}立即学习“Java免费学习笔记(深入)”;
调用sayHiToFriends会产生一个错误:
jane.sayHiToFriends()
立即学习“Java免费学习笔记(深入)”;
TypeError: Cannot read property 'name' of undefined
立即学习“Java免费学习笔记(深入)”;
解决方案一:将this保存在不同的变量中
var jane = {
name : 'Jane',
friends: ['Tarzan', 'Cheeta'],
sayHiToFriends: function(){
'use strict';
var that = this;
this.friends.forEach(function(friend) {
console.log(that.name + ' says hi to '+ friend);
});
}
}立即学习“Java免费学习笔记(深入)”;
解决方案二:利用forEach的第二个参数,它可以给this指定一个值
var jane = {
name : 'Jane',
friends: ['Tarzan', 'Cheeta'],
sayHiToFriends: function(){
'use strict';
this.friends.forEach(function(friend) {
console.log(this.name + ' says hi to '+ friend);
}, this);
}
}立即学习“Java免费学习笔记(深入)”;
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
javascript实现Java中的Map对象功能的(详细解答,附上代码)
立即学习“Java免费学习笔记(深入)”;
以上就是实例讲解JavaScript中的this指向错误解决方法(图文教程)的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号