一、this调用局部变量与全局变量
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>this关键字</title>
<script type="text/javascript">
var name = "out";
var foo = {
name: "in",
getName: function() {
console.log(this.name);
return function() {
console.log(this.name);
}
}
}
foo.getName()();
</script>
</head>
<body>
</body>
</html>
输出为什么是in和out?
其实方法的调用foo.getName()();
可以看做是2步:
1
var f1 = foo.getName();
2
var f2 = f1();
foo调用的是局部变量,所以控制台输出in;而foo的返回值f1也是个方法,且此时f1是全部变量,所以f1输出的name是全局变量。
二、this当做参数
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>this关键字2</title>
<script type="text/javascript">
var name = "out";
function f1(bb){
alert(bb.name);
}
function f2(){
alert(this.name);
}
</script>
</head>
<body>
<button onclick="f1(this)" name="名字">按钮1</button>
<button onclick="f2()">按钮2</button>
</body>
</html>
按钮1:
按钮2:
在按钮1的定义中,this被当做参数传入,此时this代指的是当前所在标签对应的DOM对象;
而在按钮2中this代指的是调用f2方法的对象(这里可以认为是全局的最大的对象)