查看以下代码:
public class ClassA {
private boolean ClassAattr = false;
public ClassA() {
ClassAHandler handler = new ClassAHandler(this);
}
}
public class ClassAHandler extends GeneralHandler {
ClassA ca = null;
public ClassAHandler(ClassA classa) {
this.ca = classa;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要访问ClassAattr
一些ClassAHandler
方法,以及其他属性.有没有办法在没有在处理程序构造函数中传递原始类的情况下这样做.我真的不喜欢这个解决方案"看起来".
在Java中,您只需return this
获取当前对象即可.你是如何用C++做到的?
Java的:
class MyClass {
MyClass example() {
return this;
}
}
Run Code Online (Sandbox Code Playgroud) 我的JavaScript应用程序遇到了棘手的问题.
如果我写这样的元素:
<li onClick="alert(this.tagName)"></li>
Run Code Online (Sandbox Code Playgroud)
我得到"李".
但是,如果我这样做:
<li onClick="foo()"></li>
Run Code Online (Sandbox Code Playgroud)
"foo()"的位置是:
function foo(){ alert(this.tagName); }
Run Code Online (Sandbox Code Playgroud)
我得到"未定义".
我不知道"这个"应该如何适用于附加功能.但是,我感到困惑,因为"这个"没有拿起元素,但显然是默认为"窗口".我无法弄清楚为什么会这样.
有人有解释吗?
在我工作的公司,有一份文档描述了我们应该在Java中遵循的良好实践.其中之一是避免返回的方法,this
例如:
class Properties {
public Properties add(String k, String v) {
//store (k,v) somewhere
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
我会有这样一堂课,所以我能写:
properties.add("name", "john").add("role","swd"). ...
Run Code Online (Sandbox Code Playgroud)
我已经多次见过这样的习语,就像在里面一样,StringBuilder
并没有发现任何问题.
他们的论证是:
...可能是同步问题的根源或对目标对象状态的失败预期.
我想不出这可能是真的情况,你们有谁能举个例子吗?
编辑该文档没有指定任何有关可变性的内容,因此我没有看到链接调用和执行以下操作之间的差异:
properties.add("name", "john");
properties.add("role", "swd");
Run Code Online (Sandbox Code Playgroud)
我会尝试与发起人联系,但我想用我的枪加载,这就是为什么我发布了这个问题.
解决:我得与其中一位作者交谈,他的初衷显然是为了避免释放尚未准备好的对象,比如在Builder模式中,并解释说如果在调用之间发生上下文切换,则对象可能在无效的状态.我认为这与返回无关,this
因为你可以犯同样的错误购买逐个调用方法,并且更多地与正确地同步构建过程有关.他承认该文件可能更加明确,并将很快修改.胜利是我的/我们的!
我是C++的新手,我不明白this
指针在以下场景中的作用:
void do_something_to_a_foo(Foo *foo_instance);
void Foo::DoSomething()
{
do_something_to_a_foo(this);
}
Run Code Online (Sandbox Code Playgroud)
我从别人的帖子里抓住了这个帖子.
有什么this
意义?我糊涂了.该函数没有输入,那么在this
做什么?
出于显而易见的原因,在JavaScript中,以下两个调用是不同的:
foo.bar();
var bar = foo.bar;
bar();
Run Code Online (Sandbox Code Playgroud)
即,在第一次调用中,this
是foo
对象.第二,它是对全球范围的参考.但是,以下示例不太直观:
(foo.bar)();
Run Code Online (Sandbox Code Playgroud)
我希望它的操作方式与第二个例子相同,但实际操作与第一个相同.也就是this
参考foo
,而不是全球范围.
什么是JavaScript的规则来决定何时使函数调用"方法调用"以及何时简单地调用函数而没有特定的this
?
正如Felix Kling在评论中指出的那样,我想知道为什么第三个例子不使用window
上下文,理论上它应该只是检索函数并在没有附加上下文的情况下调用它.他的例子澄清了我的问题:
(true && foo.bar)(); // 'this' refers to the global scope
Run Code Online (Sandbox Code Playgroud) 我怎样才能阻止Visual Studio 2015快速行动建议我"删除"这个'限定'来简化这个名字?我不想禁用快速操作本身,只是这个提示.我无法在选项中找到任何设置.我已经尝试了一些设置.
这是我正在谈论的信息:
希望你能帮忙,它让我疯狂.
我是闭包的初学者(以及一般的Javscript),我无法找到关于此代码中发生了什么的令人满意的解释:
function myObject(){
this.myHello = "hello";
this.myMethod = do_stuff;
}
function do_stuff(){
var myThis = this;
$.get('http://example.com', function(){
alert(this.myHello);
alert(myThis.myHello);
});
}
var obj = new myObject;
obj.myMethod();
Run Code Online (Sandbox Code Playgroud)
它会提醒'undefined'然后'hello'.显然这不应该是特定于jQuery的,但这是我能想到的最原始代码的最简单形式.闭包do_stuff()
可以访问该范围内的变量,但显然此规则不适用于this
关键字.
问题:
发生什么this
时,闭合的范围之外传递do_stuff()
(在这种情况下$.get()
)?是否myThis
包含它的副本this
或引用?this
在封闭中使用通常不是一个好主意吗?
任何回应都非常赞赏.
在C#静态方法中是否有一种方法可以引用定义方法的Type?
在实例方法中,您可以通过以下方式确定类型:
public void Foo()
{
Type type = this.GetType();
}
Run Code Online (Sandbox Code Playgroud)
它在静态方法中会是什么样子?
public static void Bar()
{
Type type = ....?
}
Run Code Online (Sandbox Code Playgroud)
更新:对不起,需要澄清:我知道这个typeof(...)
功能.我正在寻找一个关键字或代码,它给我类型而不显式引用类名.
更新:除了开发者艺术的答案,这正是我正在寻找的,有一个更简单的方法吗?
我有一堂课
public class A {
public String attr ="A attribute";
public void method() {
System.out.println(this+" , "+this.attr);
}
public String toString() {
return("Object A");
}
}
Run Code Online (Sandbox Code Playgroud)
还有另一个继承自它的类
public class B extends A{
public String attr = "B attribute";
public void method() {
super.method();
}
public String toString() {
return("Object B");
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,method()
of B
只是for method()
的包装A
。
当我运行以下代码
B b = new B();
b.method();
Run Code Online (Sandbox Code Playgroud)
我得到的意思Object B , A attribute
是输出,this
并this.attr
访问了不同的内容。为什么会这样?
不应该 …
this ×10
java ×3
javascript ×3
c++ ×2
c# ×1
class ×1
closures ×1
constructor ×1
function ×1
inheritance ×1
jquery ×1
onclick ×1
oop ×1
pointers ×1
quickaction ×1
return ×1
static ×1
window ×1