java与javascript中this的小解

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/javawebty/article/details/70326938

java中的this其实指向是十分清晰的,可以分为如下的情况

1.在类的内部直接使用 this

public class Test(){
    Test(){
    }
    public void a(){
    }
    public void b(){
       this.a();
    }
}

此时这个this 指向的就是这个类的实例(是实例,而不是该类)本身。因为this 表示的是实例本身,所以它是随着实例的创建而存在的,在实例未创建的时候,this 其实是不存在的,所以这就是为什么static 方法中不能使用this 的原因

2.ClassName.this

public class Test() extends SuperTest{
    Test(){
    }
    public void a(){
    }
    public void b(){
       this.a();
       SuperTest.this.c();
    }
}

这里的this 其实和1中的没有什么不同,为什么在ClassName后面使用, 因为这样表示这个this 表示的是该Class的实例(上代码中 SuperTest.this 的 this 表示的是SuperTest 实例的) 其实这个的用法的,可以与super相同 即 super == SuperTest.this 这里 SuperTest 必须是 Test 的直接父类

3.this()

public class Test() extends SuperTest{
    Test(){
      this(1);
    }
    Test(int a){
    }
    public void a(){
    }
    public void b(){
       this.a();
       SuperTest.this.c();
    }
}

这里的this直接作为构造器使用,究其原因其实还是因为this代表的是这个实例本身。不同的构造器都只是属于本身的特殊的方法而已。

JavaScript中的this

这里的 this 比较会让人疑惑,但是只要记住两点就是十分的清晰

  1. 方法中的this都是指向调用者。
  2. 任何直接暴露在window中的对象,window都是其隐式的调用对象。
var a = {
   b:function(){
     console.log(this);
   }
}
a.b();//console.log ---->a
var bb = a.b;
bb();//console.log ---->window

为什么?如何判断?其实很简单 根据 上面的 1,2就可以很简单的判断出,如下

var window.a = {
   b:function(){
     console.log(this);
   }
}
window.a.b();//console.log ---->a
var window.bb = a.b;
window.bb();//console.log ---->window

明了简单,另外立即执行的匿名函数中的this都是window 为什么?请看2的判断就知道了。

以上就是java与JavaScript中this的小解

如果有异议,或者不懂的,请给我评论,谢谢!

阅读更多

java菜鸟小解

05-18

1 任务 rn 你作为《建设工程监管信息系统》项目开发组的程序员,请实现如下功能: rn ? 查询用户信息; rn ? 添加用户信息; rn ? 修改用户信息; rn ? 删除用户信息。 rn 2 功能描述 rn[img=http://img.bbs.csdn.net/upload/201405/18/1400386861_12558.jpg][/img]rn图3.7 用户管理窗体rn 2.1 用户信息浏览 rn 如图3.7 所示,单击“显示所有用户”按钮,并在左侧的“用户ID 列表”中选择某个 rn用户,则在右侧显示“用户姓名”、“用户密码”和“所属部门”。 rn2.2 添加用户 rn 在图3.7 中,单击“添加”按钮,输入“用户姓名”、“用户密码”和“所属部门”信 rn 息后,单击“确定”按钮完成用户信息添加。 rn 2.3 用户信息修改 rn 在图3.7 的“用户ID 列表”中选择用户ID,则显示相应用户信息;单击“修改”按钮, rn 修改用户信息;单击“确定”按钮完成修改。 rn 2.4 用户信息删除 rn 在图3.7 的“用户ID 列表”中选择用户ID,单击“删除”按钮完成用户信息删除。 rn 3 要求 rn 3.1 界面实现 rn 实现图3.7 所示的用户信息管理窗体。 rn 3.1.1 “所属部门”项值为 “交易中心”,“投标管理”,“评标委员会” 。 rn 3.1.2 “确定”或“取消”按钮初始为不可用状态;单击“添加”或“修改”按钮,则 rn “确定”或“取消”按钮可用;单击“确定”或“取消”按钮,则“确定”和“取消”按钮 rn 变为不可用。 rn 3.1.3 单击“添加”按钮,则“修改”和“删除”按钮设置为不可用;单击“修改”按 rn 钮,则“添加”和“删除”按钮设置为不可用。 rn 3.1.4 单击“取消”按钮,重新初始化用户信息管理窗体。 rn 3.1.5 单击“退出”按钮,关闭窗体,退出应用程序。 rn 3.2 数据库实现 rn 3.2.1 创建数据库ConstructionDB。 rn 3.2.2 创建用户信息表(T_user ),表结构见表3.7。 rn 表3.7 用户信息表结构 rnrn 字段名 字段说明 字段类型 是否允许为空 备注 rnrnUser_id 用户ID Int 否 主键,自动增长 rnrnUser_name 用户姓名 Varchar(12) 否 rnrnUser_password 用户密码 Varchar(12) 否 rnrnDept_name 部门名称 Varchar(32) 否 rnrn 3.2.3 在表T_user 中插入记录,见表3.8。 rnrnUser_id User_name User_password Dept_name rnrn201100001 张益丰 123456 交易中心 rnrn201100002 刘伟光 676869 投标管理 rnrn201100003 李小文 888888 评标委员会 rnrn201100004 杨成武 232425 交易中心 rn我不知道怎么能使按钮变灰,怎么在文本框里把用户的名字显示出来

没有更多推荐了,返回首页