手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >实例讲解JavaScript中的this指向错误解决方法
实例讲解JavaScript中的this指向错误解决方法
摘要:看如下对象定义:'usestrict'varjane={name:‘Jane',display:function(){retrun'Pers...

看如下对象定义:

'use strict' var jane = { name : ‘Jane', display : function(){ retrun 'Person named ' + this.name; } };

这样能正常调用

jane.display();

下面的调用会出错:

var func = jane.display; func()

TypeError: Cannot read property 'name' of undefined

因为,this指向已经改变,正确的方式如下:

var func2 = jane.display.bind(jane); func2()

'Penson named Jane'

所有函数都有其特殊的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); }); } }

调用sayHiToFriends会产生一个错误:

jane.sayHiToFriends()

TypeError: Cannot read property 'name' of undefined

解决方案一:将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); }); } }

解决方案二:利用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); } }

【实例讲解JavaScript中的this指向错误解决方法】相关文章:

JavaScript的document和window对象详解

JavaScript中的Math.LOG2E属性使用详解

JavaScript获取两个数组交集的方法

在JavaScript中使用开平方根的sqrt()方法

基于JavaScript实现智能右键菜单

JavaScript对W3C DOM模版的支持情况详解

JavaScript中的parse()方法使用简介

JavaScript中的sub()方法的使用介绍

JavaScript判断数组是否包含指定元素的方法

JavaScript中String.match()方法的使用详解

精品推荐
分类导航