JS中this的运用

先看一段代码,请问alert的值是多少呢?

 1   function fn(){
 2     alert(this.a);
 3   };
 4   let obj ={
 5     'a':1,
 6     'b':2,
 7     'c':[{
 8         'a':3,
 9         'b':4,
10         'c':fn
11         }]
16   };
17   let a =5;
18   obj.c[0].c();

结果是3。

this代表作用域的值,通俗的理解,就是 当前的方法属于谁,this就指向谁

obj.c[0].c();

这行代码首先调用了obj对象中 属性c的值 而C是又一个数组对象
   然后,调用了c的第一个数组,而这个数组为c[0]创建了三个属性。
     然后,调用c[0].c()方法
    这个时候,c()属于c[0]的方法
    所以,this指向的是c[0]
    所以,this.a指的是3


看下面这个例子

  function fn(){
    alert(this.a);
  };
  let obj ={
    'a':1,
    'b':2,
    'c':[{
        'a':3,
        'b':4,
        'c':fn
        },{
        'a':4,
        'b':5,
        'c':fn
      }]
  };
  let a =5;
  obj.c[1].c();

结果是4。

结果印证了上面的

this指向的是c[1]
所以,this.a指的是4。

重要的话再说一遍

this代表作用域的值,通俗的理解,就是 当前的方法属于谁,this就指向谁

你记住了吗?
posted @ 2017-11-30 22:44  Moonshadows  阅读(100)  评论(0编辑  收藏  举报