亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

實例講解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);
  }
} 

相關(guān)文章

最新評論