黑马程序员技术交流社区

标题: 关于js中this的用法 [打印本页]

作者: HM邱刚权    时间: 2013-4-7 16:16
标题: 关于js中this的用法
本帖最后由 HM邱刚权 于 2013-4-16 17:16 编辑

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
        function initEvent() {
            var tableMain = document.getElementById("tableMain");
            var trs = tableMain.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                var tr = trs;
                tr.onclick = TrOnClick;
                tr.style.cursor = "pointer";
            }
        }
        function TrOnClick() {
            var tableMain = document.getElementById("tableMain");
            var trs = tableMain.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                var tr = trs;
                if (tr == this) {                                          //不懂这里this是什么意思
                    tr.style.backgroundColor = "red";
                }
                else {
                    tr.style.backgroundColor = "white";
                }
            }
        }
    </script>
</head>
<body>
<table id="tableMain">
<tr ><td>喜洋洋</td><td>100</td></tr>
<tr><td>懒洋洋</td><td>10</td></tr>
<tr><td>美洋洋</td><td>60</td></tr>
<tr><td>慢洋洋</td><td>100</td></tr>
<tr><td>软绵绵</td><td>200</td></tr>
</table>
</body>
</html>
<script type="text/javascript">
    ShowIt();
</script>

请解释下this在JS的用法





作者: 韦俊琳    时间: 2013-4-7 16:56
大致有4种用法:函数调用,方法调用,构造函数调用,apply调用
具体地,
作为函数调用时,类似于C#中的给当前类的属性赋值,用法如下:
  1. function test() {
  2. this.a = "函数调用";
  3. alert(a);
  4. }
  5. test();
复制代码
作为构造函数调用时,this就是指通过这个构造函数创建出来的对象。例如:
  1. function test() {
  2. this.a= "构造函数调用";
  3. var o = new test();
  4. alert(o.a);
复制代码
作为方法调用时,this就是指这个上级对象。例如:
  1. function test() {
  2. alert(this.a);
  3. }

  4. var o = {};
  5. o.a = "方法调用";
  6. o.b = test;
  7. o.b();
复制代码
作为apply调用时,this指向的是apply中的第一个参数。例如:
  1. var x = 0;
  2. function test() {
  3. alert(this.a);
  4. }

  5. var o = {};
  6. o.a = "apply调用";
  7. o.b = test;
  8. o.b.apply();
  9. o.b.apply(o);
复制代码

作者: 郑丹丹1990    时间: 2013-4-7 22:13
this应该是当前对象它自己吧!
     if (tr == this) {        //如果tr变量是当前单元格的话。(就如同好多单元格,但tr不一定是当前的单元格(即this))
      tr.style.backgroundColor = "red";
           }
        else {
          tr.style.backgroundColor = "white";
           }
个人意见仅供参考!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2