文档章节

java与JavaScript中this小解

merlinlock
 merlinlock
发布于 2017/04/21 16:12
字数 508
阅读 32
收藏 0

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的小解

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

© 著作权归作者所有

共有 人打赏支持
merlinlock
粉丝 0
博文 6
码字总数 6592
作品 0
南京
程序员
私信 提问
三分钟读懂Java与JavaScript的区别,让小白摘帽

Java跟JavaScript虽然在名称上有些许相似,但其实是两种完全不同的语言。Java是一种程序设计语言,JavaScript是客户端的脚本语言,把这两样东西放在一起比较在科学上其实并不严谨。但它们唯一...

小欣妹妹
2017/10/21
0
0
json-rpc-for-java的网友评论

json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量 级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要...

红薯
2009/12/11
884
2
在服务器端运行JavaScript文件(一)

简介: 把JavaScript脚本与服务器上Java代码相结合,从而获得在服务器端和客户端都能够自由使用的JavaScript脚本。另外,经过这一系列的被展现技术,无论是基于Ajax还是非Ajax的客户端,都将...

长平狐
2012/10/16
976
0
Java 语言频遭替换,这次真的要狗带了吗?

斯坦福大学在最近更新的《程序设计方法学》课程中(代号 CS 106J),用 JavaScript,替换掉了此前主修的 Java 语言(课程代号 CS 106A)。 本次变动由名誉教授 Eric Roberts 牵头,作为 CS 1...

达尔文
2017/07/23
10.2K
65
thrift rpc js使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/byxdaz/article/details/84871376 一、thrift js使用方式 使用thrift js时,PRotocol需要使用TJSONPRotocol/T...

byxdaz
2018/12/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AWS自动部署工具codedeploy的部署概述

1)在AWS lambda平台上部署: 三大部分:要部署的内容 --> 部署的配置 --> 更新的lambda函数版本 部署的流程:上传修订的应用程序-->创建一个应用程序-->指定部署组-->指定部署的配置-->指定...

守护-创造
20分钟前
0
0
好程序员教程分享Javascript设计模式

好程序员教程分享Javascript设计模式 方法一 对象字面量表示法   在对象字面量表示法中,一个对象被描述为一组包含在大括号中,以逗号分隔的 name/value 对。对象内的名称可以是字符串或标...

好程序员IT
26分钟前
1
0
fail-fast和fail-safe的介绍和区别

fail-fast和fail-safe 前言 前段时间公司招的实习生在使用迭代器遍历的时候,对集合内容进行了修改,从而抛出ConcurrentModificationException. 然后给他讲解之余也整理了这一篇文章. fail-fa...

群星纪元
28分钟前
2
0
控制反转 IOC

控制反转(Inversion of Control,缩写为IoC)面向对象设计原则,降低代码耦合度 依赖注入(Dependency Injection,简称DI) 依赖查找(Dependency Lookup):容器提供回调接口和上下文条件给...

SibylY
39分钟前
1
0
网络介绍:Kubernetes设计文档

模型和动机 Kubernetes从Docker默认的网络模型中独立出来形成一套自己的网络模型。该网络模型的目标是:每一个pod都拥有一个扁平化共享网络命名空间的IP,通过该IP,pod就能够跨网络与其它物...

xiangyunyan
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部