您的位置:首页 > Web前端 > JavaScript

JS的this关键字

2013-01-01 16:21 260 查看
JavaScript中的this关键字是一个难以琢磨的概念,是一个依赖于它的执行环境而被解析的关键字。简单说就是谁调用这个方法,方法里的this就是谁.
1,在JS文件中直接alert(this);this代表的是window,当前的执行环境是在JS的顶层域里面。
2,下面这个例子中this指向的是调用该方法的对象,button标签。
<script type="text/javascript">
function test() {
alert(this.value);
this.style.color = "red";
}
</script>

</head>
<body>
<input type="button" id="ipt" value="test this">
<script type="text/javascript">
document.getElementById("ipt").onclick = test;
</script>
</body>
</html>上面的例子等价于下面的例子,document.getElementById("ipt").onclick相对于把test函数变成了id为 ipt元素的一个函数属性了,从而让this指向了id为 ipt元素。但是如果写成<input type="button"  id="ipt" onclick="test()" value="test this">这样的方式调用test方法,this却是指向了window。(不明白?直接指定的话没有JS环境绑定?)
<script type="text/javascript">
function test() {
alert(this.value);
this.style.color = "red";
}
</script>

</head>
<body>
<input type="button" id="ipt" value="test this">
<script type="text/javascript">
var button = document.getElementById("ipt");
test.call(button);
</script>
</body>
</html>3,在一个函数中,this代表这个函数的执行环境
function Test(){
alert(this);
}

Test();//outputs window

var obj = new Test(); // outputs object
Test()是在window域里执行的,其等价于window.Test();
var obj = new Test(); 其相当于 obj.Test();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: