麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 09:42:39
字體:
供稿:網(wǎng)友

看如下對象定義:

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

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

jane.display();

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

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

因?yàn)椋瑃his指向已經(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)生一個(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);  }} 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久一区二区三区av | 欧美激情区| 国产精品观看在线亚洲人成网 | 色视频一区二区 | 国产在线观看91一区二区三区 | 久久久久久久久久亚洲精品 | 精品一区免费 | 国产小视频在线 | 黄色成人av在线 | 毛片免费观看完整版 | 日本欧美一区二区 | 韩国草草影院 | 精品一区在线视频 | 免费观看高清视频网站 | 日韩视频在线一区二区三区 | 国产免费一区二区三区 | 欧美一级高潮片免费的 | 久草在线手机视频 | 深夜小视频在线观看 | 91九色视频| 久久久婷婷| 全黄裸片武则天艳史 | 性视频久久 | 国产免费一区二区三区 | 欧美成人一级 | 免费看一级毛片欧美 | 成人在线观看免费观看 | 播色网| www成人在线观看 | 中文字幕欧美亚洲 | 亚洲精品一区二区三区在线看 | 精品中文字幕在线观看 | 久久蜜臀一区二区三区av | 日本在线不卡一区二区 | 国产精品视频一区二区三区综合 | 一级在线 | 久久一级| 国产精品视频免费在线观看 | 日日鲁夜夜视频热线播放 | 欧美一级黄色片在线观看 | 天使萌一区二区三区免费观看 |