JavaScript中的this关键字

this始终指向调用它的对象


通过几个例子弄清楚:<div id="test" οnclick="mytest(this)">aaaa</div>

1、 alert(this); //object window,调用该段代码的是window

alert(this === window); //true,调用该段代码的是window


2、 var test = function(){
alert(this === window);
}
test();*/ //true,调用test对象的的依然是window


3、 var test = function(){
alert(this === window);
}
new test(); //false,使用了new创建了一个新的对象, 调用test的是这个新对象,不再是window


4、 var test = {
'a': 1,
'b': function(){
alert(this === test);
}
}
test.b(); //true,test对象调用


5、 var test = {
'a': 1,
'b': function(){
alert(this === test);
}
}
var test1 = test;
test1.b(); //true,虽然test1的值为test,但test1仍然是test对象,两个指的是同一个对象

var test = {
'a': 1,
'b': function(){
alert(this === test);
}
}
var test1 = test;
test.a = 2;
alert(test1.a); //2
,test1、test指的是同一个对象


6、 var test = {
'a': 1,
'b': {
'b1': function(){
alert(this === test);
}
}
};
test.b.b1();*/ //false,直接调用b1的是b而不是test


var test = {
'a': 1,
'b': {
'b1': function(){
alert(this === test.b);
}
}
};
test.b.b1(); //true


7、 var test = function(){
var innerTest = function(){
alert(this === test);
};
innerTest();
}
test(); //false,调用innerTest的是window对象,即使嵌套很多层,调用各个函数的都是window 对象


var test = function(){
var innerTest = function(){
alert(this === window);
var innerTest1 = function(){
alert(this === window);
};
innerTest1();
};
innerTest();
};
test(); //true, true


8、 var test = function(){
alert(this === window);
}
var test1 = {

}
test.apply(test1); //false,调用一对象的一个方法,以另一个对象替换当前对象,所以window对象已经被替换成test1


9、 var test = function(){
}
var my = function(){
this.a = function(){
alert(this === mytest2);
}
}
var mytest = new my();
test.prototype = mytest;
var mytest2 = new test();
mytest2.a(); //true,原型继承


10、var mytest = function(context){
alert(context.getAttribute('id'));
alert(this === window);
} //test, true,关于DOM对象的调用,依然是window

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值