JavaScript中的this关键字
发布在js菜鸟中的菜鸟开始学飞2014年12月22日view:3003
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

在JavaScript中经常会用到this关键字;那么这个this关键字指的是谁?就是我们要研究的问题!

在叙述人称“你,我,他”这三个人称中这个this就是第一人称“我”;

this是谁和在哪定义和在哪执行半毛钱关系都没有,和函数执行时候的主体有关系.this出现在作用域下 b
在js中我们常用的this有这几种情况

*1、给元素绑定事件 oDiv.onclick=function(){ this就是oDiv}

2、;(function(){ this是window })();

3、函数执行前的主体 fn()–>window obj.fn()–>obj

4、当以构造函数运行的时候,this就是我们创建的那个实例*

1.给元素绑定事件 oDiv.onclick=function(){ this就是oDiv}

enter code here<!doctype html><html><head>meta charset="utf-8">  <title>技法无高低,功力有深浅</title></head><body>
<div id="div1">我是div1</div></body></html><script type="text/javascript">    div1.onclick=function(){
    alert(this.innerHTML);
}</script>

以下是上面代码执行结果: enter image description here

  1. ;(function(){ this是window })()

<!doctype html><html><head><meta charset="utf-8"><title>技法无高低,功力有深浅</title></head><body></body></html><script type="text/javascript"> var innerHTML="我是window的innerHtml" ;(function fn(){ console.log(this.innerHTML); })();</script>

以下是上面代码执行结果: enter image description here

  1. 函数执行前的主体 fn()–>window obj.fn()–>obj

    enter code here var innerHTML=”我是window的innerHtml”;

    var obj={innerHTML:”我是obj”,fn:fn};

    function fn(){ alert(this.innerHTML); }; fn();

    obj.fn();

以下是上面代码执行结果: enter image description here enter image description here

  1. 当以构造函数运行的时候,this就是我们创建的那个实例

这个原则可以用上面的代码实现: 上面第三条 fn();相当于在window下的全局方法 window.fn()所以fn里面的this就是window obj.fn();则是obj调用的fn方法所以fn里面的this就是obj

切记this是一种毫无节操的机制; this是谁和在哪定义和在哪执行半毛钱关系都没有,和函数执行时候的主体有关系;

评论
发表评论
5年前
赞了此文章!
5年前

@前端乱炖 有涉及到啊;(function(){ this是window })()

5年前

@前端乱炖 2014-12-22T09:53:11.000Z 这世间貌似不对吧。。。

5年前

@前端乱炖 哈哈哈,神补。

5年前

讲的太简单了,然后漏了最重要的:闭包的时候this指向谁?

WRITTEN BY
古道川
技法无高低、功力有深浅。
TA的新浪微博
PUBLISHED IN
js菜鸟中的菜鸟开始学飞

今天不是特殊的日子、我想要的,我会去争取!把自己驾到台风口上,学飞!!!

技法我高低,功力有深浅!呵呵~

我的收藏