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代表这个函数的执行环境
var obj = new Test(); 其相当于 obj.Test();
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 objectTest()是在window域里执行的,其等价于window.Test();
var obj = new Test(); 其相当于 obj.Test();
相关文章推荐
- js中this关键字的指向问题
- JS的this关键字
- JS中this关键字详解
- js中的构造函数和this关键字
- JS this关键字详解
- 关于JS中的this关键字
- Js中的this关键字
- js中this关键字的值
- [js]02js预解释-作用域-this关键字
- Js全局变量与局部变量_this关键字
- JS学习之闭包、this关键字、预解释、作用域综合
- 【js与jquery】javascript中的this关键字的理解
- js的this关键字
- JS-this关键字
- Js中的this关键字(吉木自学)
- JS中内嵌函数中this关键字的使用
- js中的this关键字详解
- js中的this关键字
- Node.js中的this关键字
- JS中this关键字的区别