最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

说一说javascript的“this”

来源:动视网 责编:小采 时间:2020-11-27 20:29:17
文档

说一说javascript的“this”

说一说javascript的this:JS中不容易懂的概念除了闭包之外,还有一个应该是首当其冲:this ,这个东西经常让人搞混,那么今天我们就来好好看看它的庐山真面目。定义一个对象:var Charles = { living: true, age:23, gender:male, getGender:function(){ r
推荐度:
导读说一说javascript的this:JS中不容易懂的概念除了闭包之外,还有一个应该是首当其冲:this ,这个东西经常让人搞混,那么今天我们就来好好看看它的庐山真面目。定义一个对象:var Charles = { living: true, age:23, gender:male, getGender:function(){ r
 JS中不容易懂的概念除了闭包之外,还有一个应该是首当其冲:this ,这个东西经常让人搞混,那么今天我们就来好好看看它的庐山真面目。

定义一个对象:

var Charles = {
 living: true,
 age:23,
 gender:male,
 getGender:function(){ return Charles.gender;
 }
}; console.log(Charles.getGender()); //
输出:male

下面的代码有一样的效果:

var Charles = {
 living: true,
 age:23,
 gender:male,
 getGender:function(){ return this.gender; //注意“this” }
}; console.log(Charles.getGender()); //
输出:male

那么,this究竟在代码里指代的是什么?我们该怎么分析,因为在具体的环境里有时很难分清this指代的真面目。那么,现在,需要记住一句话:
当this值的宿主函数被封装在另一个函数里面,或者在另一个函数的上下文中被调用时,this值永远是对全局(head/window)对象的引用。
也就是说,this值在嵌套函数里面,对于ES5永远指向window。

var myObject = {
 myProperty: 'I can see the light',
 myMethod: function(){ var that = this; console.log(this); 
 //
输出:'Object(这里是myObject)' var helperFunction = function(){ console.log(that.myProperty); // 输出'I can see the light' console.log(this); //如果不使用`that`,则输出'window',因为是在嵌套函数里面 }(); //立即执行 } } myObject.myMethod(); //调用 myMethod

结合上面的那句话,对于ES5来说,this也就是这个情况:

var myObject = {
 func1: function(){ console.log(this); //
输出 'Object'(第一层函数) var func2= function(){ console.log(this); //从此处开始,this都是window(第二层函数) var func3= function(){ console.log(this); //当然是window }(); }(); } } myObject.func1();

如图

到这里,应该明白了this在JS中的位置,相信以后不会再分不清楚了。

文档

说一说javascript的“this”

说一说javascript的this:JS中不容易懂的概念除了闭包之外,还有一个应该是首当其冲:this ,这个东西经常让人搞混,那么今天我们就来好好看看它的庐山真面目。定义一个对象:var Charles = { living: true, age:23, gender:male, getGender:function(){ r
推荐度:
标签: js 说一 javascript
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top