最新国产好看的视频,伊人天堂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)論

会理县| 社会| 阳原县| 湘乡市| 双城市| 青海省| 华坪县| 抚顺市| 固镇县| 湖南省| 玉树县| 和静县| 曲周县| 惠水县| 大埔县| 贺州市| 遂溪县| 平舆县| 崇义县| 松溪县| 汝州市| 无为县| 磐石市| 陵川县| 全南县| 黄平县| 长沙县| 金沙县| 淮滨县| 麻栗坡县| 巴楚县| 合江县| 肥西县| 吴川市| 巴塘县| 宁夏| 阜康市| 镇平县| 沈丘县| 安丘市| 广州市|