js一百零一夜之第七夜-javaScript this 的用法

this ,是javaScript 中的关键字,他代表在函数运行时,在内部产生的一个对象,只能在函数内部使用
函数总是变化的,所以this也总是变化的,但是有一点,this指的是,调用函数的那个对象
 
1.纯粹的函数调用
function test(){
    this.x=1;
}
此处的this 是window 对象,那么如何来验证呢
test();
alert(x); 或者alert(window.x);  输出的都是  1 
 
还有一种
var  x =3;
function test(){
  alert(this.x);
}
test();
输出: 3   证明是this 是window 对象
 
再变化一下
var x=2;
function test(){
    this.x=5;
}
test();
alert(x);
输出:   5   证明是this 是window 对象
 当不用new 的时候,this,指向window
 
2.函数作为对象方法调用,与作为对象的方法调用 是一一样的
 
function test(){
     alert(this); //[object Object]
      alert(this.x);
      }
      var o={};
      o.x=0;
      //o.m=test();// 这是一个赋值语句,如果将test() 赋值给o.m 由于test()并没有返回值,所有我们看不到o.m 的值,如果test 函数体里面写的是 return "aaaa";
      //则o.m 的值为aaa
      o.m=test;// 将函数体赋值给m变量
 
      o.m();// 将函数作为对象的方法调用 this 改变 弹出0 
 
3.作为构造函数调用
  所谓构造函数,就是通过构造函数生成一个新对象
 function test(){
  this.x=1;
}
var t=new test();
alert(t.x);  //1
那么怎么确定 this 是哪个对象呢,下面做如下的验证
 
var x=1212;
   function test(){
  this.x=1;
}
var t=new test();
alert(t.x);//  1
题记:在javaScript 中new 关键字的作用是什么呢?
是在创建一个新的对象的时候,才使用关键字new ,new test() 他是一种创建对象的语法,不必深究为什么要这样写。
 
4.apply()调用
apply() 是函数对象的一个方法 ,作用是改变函数的调用对象,他的第一个参数就是改变后的调用这个函数的对象
因此this 指向的就是这个改变调用函数后的对象,如果参数为空,则默认表示的是window 全局 对象
 
var x=12;
     function test(){
         alert(this.x);
         }
    var o={};
    o.x=1;
    o.m=test;
    o.m.apply(); //12
 
在改一下,传入参数:
     var x=12;
     function test(){
         alert(this.x);
         }
    var o={};
    o.x=1;
    o.m=test;
    o.m.apply(o); //1  将this 转交给o  弹出1
 
到此this 的使用方法介绍完毕,自己也明白了,this 的用法,以后如果遇到新的this 用法会增加到此文档中,敬请关注,文档说明参考网上 http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html
作者所写。
 
总结:本次文档总共介绍了4种this 的用法,
1.this 作为全局对象
2.this 作为函数对象
3.this 作为构造函数的新对象
4.this  使用apply()作为被传递进来的对象,如果没有参数,则this 为全局对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值