国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

實例講解JavaScript中的this指向錯誤解決方法

2019-11-20 09:42:39
字體:
來源:轉載
供稿:網友

看如下對象定義:

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

這樣能正常調用

jane.display();

下面的調用會出錯:

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

因為,this指向已經改變,正確的方式如下:

var func2 = jane.display.bind(jane);func2()
'Penson named Jane'

所有函數都有其特殊的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);    });  }}  

調用sayHiToFriends會產生一個錯誤:

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的第二個參數,它可以給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);  }} 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘孜| 丰原市| 玉屏| 黄石市| 柳州市| 岑溪市| 武威市| 于田县| 伊宁县| 太谷县| 清丰县| 新津县| 城固县| 惠来县| 宽城| 吉安县| 垦利县| 右玉县| 黄龙县| 珲春市| 册亨县| 镇江市| 五莲县| 崇礼县| 防城港市| 新绛县| 开鲁县| 南城县| 合川市| 红原县| 江安县| 观塘区| 永宁县| 商城县| 清新县| 绥阳县| 肥东县| 犍为县| 咸宁市| 岑溪市| 潞西市|