實例講解JavaScript中的this指向錯誤解決方法
更新時間:2016年06月13日 16:52:46 作者:zhoutk
JavaScript中this指向的處理是令大家普遍頭疼的問題,這里我們舉一個實例講解JavaScript中的this指向錯誤解決方法,需要的朋友可以參考下
看如下對象定義:
'use strict' var jane = { name : ‘Jane', display : function(){ retrun 'Person named ' + this.name; } };
這樣能正常調(diào)用
jane.display();
下面的調(diào)用會出錯:
var func = jane.display; func()
TypeError: Cannot read property 'name' of undefined
因為,this指向已經(jīng)改變,正確的方式如下:
var func2 = jane.display.bind(jane); func2()
'Penson named Jane'
所有函數(shù)都有其特殊的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); }); } }
調(diào)用sayHiToFriends會產(chǎn)生一個錯誤:
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的第二個參數(shù),它可以給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); } }
您可能感興趣的文章:
- 詳解JS中定時器setInterval和setTImeout的this指向問題
- 針對JavaScript中this指向的簡單理解
- 深入理解js函數(shù)的作用域與this指向
- javascript中this指向詳解
- JS中改變this指向的方法(call和apply、bind)
- 靈活的理解JavaScript中的this指向
- js綁定事件this指向發(fā)生改變的問題解決方法
- JavaScript call apply使用 JavaScript對象的方法綁定到DOM事件后this指向問題
- javascript讓setInteval里的函數(shù)參數(shù)中的this指向特定的對象
- 詳解JavaScript中this的指向問題
相關(guān)文章
簡介JavaScript中的getUTCFullYear()方法的使用
這篇文章主要介紹了簡介JavaScript中的getUTCFullYear()方法的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06分享我學(xué)習(xí)js的過程 作者aircy javascript學(xué)習(xí)教程
分享我學(xué)習(xí)js的過程 作者aircy javascript學(xué)習(xí)教程...2007-02-02Javascript學(xué)習(xí)筆記4 Eval函數(shù)
在初學(xué)JS的時候就知道這個函數(shù),卻一直沒有了解過他的用途,也一直都是睜一只眼閉一只眼,這次來深入地了解一下這個函數(shù)的作用。2010-01-01