最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例講解JavaScript中的this指向錯(cuò)誤解決方法

 更新時(shí)間:2016年06月13日 16:52:46   作者:zhoutk  
JavaScript中this指向的處理是令大家普遍頭疼的問(wèn)題,這里我們舉一個(gè)實(shí)例講解JavaScript中的this指向錯(cuò)誤解決方法,需要的朋友可以參考下

看如下對(duì)象定義:

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

這樣能正常調(diào)用

jane.display();

下面的調(diào)用會(huì)出錯(cuò):

var func = jane.display;
func()
TypeError: Cannot read property 'name' of undefined

因?yàn)?,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會(huì)產(chǎn)生一個(gè)錯(cuò)誤:

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的第二個(gè)參數(shù),它可以給this指定一個(gè)值

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)文章

最新評(píng)論

通许县| 龙南县| 尚义县| 江西省| 华阴市| 怀远县| 曲沃县| 新巴尔虎左旗| 香港| 岳阳市| 烟台市| 柳江县| 定安县| 古蔺县| 夹江县| 莎车县| 千阳县| 盐山县| 礼泉县| 长沙市| 东乡县| 青岛市| 玛纳斯县| 新野县| 淮南市| 景谷| 宜君县| 金川县| 青浦区| 会宁县| 云阳县| 上饶县| 巫山县| 宣武区| 原阳县| 涿鹿县| 瑞昌市| 承德市| 德安县| 清新县| 阜康市|