前端-JS-this

this的含义:代表的是执行当前代码的对象。

先从我最开始认识this说起:

<input  id='btn' type='submit' value='确认' />

JS代码:

var btn = document.getElementById('btn');

btn.οnclick=function(){

alert(this.value);

}

运行,显示为:确认

老师在讲面向对象时讲到this,直接把我绕晕了,我查了查资料并实验了下,总结如下:

this指向的是一个   对象          

1.纯粹的函数,非对象的方法:默认为指向window

var x=1;

function a(){
a
lert(this.x);
}
a();
这里,我们定义了一个全局变量x并赋值为1,在纯函数中 alert 出来this,结果显示为: 1

默认情况下,this指向的是window,是全局Global,我们在执行函数a时,实际上是window.a();所以this现在指向的是全局

而我们在全局中定义了一个x,所以alert(this.x)结果是x的值。

为了证明,我们修改一下代码:

function a(){
this.x = 2;
}
a();
alert(x);

结果显示为2,说明我们执行函数a时,使用this定义了一个全局变量x,并赋值为2;

在这里列出一个特殊情况,在标签内部调用函数

<input  id='btn' type='submit'οnclick='dosomething()' value='确认' />

在这里,这个标签点击时调用的函数,其this指向仍然为window全局

而:<input  id='btn' type='submit'οnclick='dosomething(this)' value='确认' />

这里,因为调用函数时将this传入调用函数中,这个this指向的该标签

2.对象内的函数(对象内的方法),指向调用该函数的对象

var objA = new Object();//新建一个对象a
objA.someValue = 1;
objA.fnTest = function(){
alert('valueA:'+this.someValue);
}
var objB = new Object();//新建一个对象b
objB.someValue = 2;
objB.fnTest = function(){
alert('valueB:'+this.someValue);
}
objA.fnTest();
objB.fnTest();

分别显示valueA:1  valueB:2

3.在构造函数内调用,this指向新创建的的对象

function test(){ 
    this.x = 1; 
 
  var o = new test();
alert(o.x);  

显示:1。

4.使用其他方法绑定this指向

   发






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值