标签: this

如果在C++中删除它会发生什么

可能重复:
使用"删除此项"删除当前对象是否可以?

我刚刚看到他们delete this;在类函数中完成的一些代码,我知道这不是一个好的设计,但它定义了会发生什么,让我们说这个类总是来自某个地方的指针.是否会以正确的方式删除它?

class A
{
 public:
    void abort() { delete this; }
};

class B
{
    void func() { A* a = new A; a->abort(); }
};
Run Code Online (Sandbox Code Playgroud)

c++ memory this delete-operator

13
推荐指数
1
解决办法
1649
查看次数

如何在C#中通过ref传递这个?

在我的一个类(ClassA)中,我想创建另一个类(ClassB)的相关实例,为它提供对启动它创建的对象的引用.所以我为ClassB提供了一个带有(ref ClassB master)参数的construcror.但是在ClassA中,我不能只调用var slave = new ClassB(ref this).怎么实现这个?

.net c# reference this

13
推荐指数
2
解决办法
2万
查看次数

'this'引用是否存储在Java中的调用堆栈中?

我们已经知道,当我们在Java中调用方法时,参数和局部变量将存储在堆栈中.

例如,以下代码:

public class Test
{
    int x = 10;
    int y = 20;

    void test(int y)
    {
        int z = y;
        this.x = y; // How JVM knows where is our current object?
    }

    public static void main(String [] args)
    {
        Test obj = new Test();
        obj.test(3);
    }
} 
Run Code Online (Sandbox Code Playgroud)

当我们调用时,会产生如下所示的调用堆栈obj.test():

|             |
+-------------+
|     z       |
|     y       |  obj.test()
+-------------+
|    obj      |  main()
+-------------+
Run Code Online (Sandbox Code Playgroud)

但我想知道存储this在哪里引用method?它是否也存储在堆栈中,如下所示:

|             |
+-------------+
|   this      | …
Run Code Online (Sandbox Code Playgroud)

java callstack this calling-convention

13
推荐指数
1
解决办法
1094
查看次数

Javascript回调失去'这个'

我有一个发行人,我在这个'对象'中失去了'this'.以下javascript的输出给了我"some-id"然后"undefined".当我在回调函数中使用'this'时,范围会超出对象,并且不再使用'this'.如何让回调使用'this'或者至少可以访问该对象?

由于我将创建多个对象,因此我无法创建像存储一样的"静态".请帮助这个javascript n00b ;-)

这是我的测试代码,您可以用它来重现我的问题.我想要的是CheckBox.doSomething()返回该测试用例this.id应匹配的值some-id.

function CheckBox(input_id) {
    this.id = input_id;
    this.doSomething();
    $('#some-element').click(this.doSomething);
}

Checkbox.prototype.doSomething = function() {
    alert(this.input_id);
}

var some_box = new CheckBox('some-id');
some_box.doSomething();
$('#some-element').click();
Run Code Online (Sandbox Code Playgroud)

编辑:我甚至无法让它按照我的要求工作:

function CheckBox2(input_id) {
    this.id = input_id;
    alert(this.id);
}

CheckBox2.prototype.doSomething = function() {
    alert(this.input_id);
}
var some_box = new CheckBox2('some-id');
some_box.doSomething();
Run Code Online (Sandbox Code Playgroud)

javascript scope object callback this

13
推荐指数
2
解决办法
1万
查看次数

Function.bind.bind(Function.call)如何解决?

我的代码库中有这一行:

var uncurryThis = Function.bind.bind(Function.call);
Run Code Online (Sandbox Code Playgroud)

我正在努力解决这个问题.据推测,它是不可靠的.我该如何解决这个问题?

我想这是一个版本Function.bind,其自身this必然Function.call.对我没有帮助.而且我没有找到任何用途,所以我甚至不确定你是单独称它还是需要"作为一种方法"来调用它,只是,你知道,首先绑定它.

javascript functional-programming this function-binding

13
推荐指数
2
解决办法
1662
查看次数

ES6箭头功能在V8中有词汇

我使用胖箭头函数有以下ES6代码:

var test = {
  firstname: 'David',
  fn: function() {
    return ['one', 'two', 'tree'].map(() => this.firstname)
  }
}
console.log(test.fn())
Run Code Online (Sandbox Code Playgroud)

根据箭头函数应该如何工作,我希望this成为test对象.ES6Fiddle,Traceur和Firefox产生了预期的输出["David", "David", "David"].

chrome://flags/#enable-javascript-harmony但是,在Chrome中启用这些功能时,我会得到[undefined, undefined, undefined].如果console.log(this)它显示它是窗口对象,则在严格模式下出现错误.thisES6箭头功能的词汇是否未在V8中实现?

javascript v8 this lexical-scope ecmascript-6

13
推荐指数
1
解决办法
3306
查看次数

IntelliJ/Android Studio:删除不必要的'this'.

我正在开发一个项目,以前的开发人员添加了许多this.x代码,在我看来,这些代码使代码更长,因此可读性更低.它通过一些Eclipse保存操作放在整个项目中.

我正在寻找的是IntelliJ重构方法,我可以重构整个项目的所有自引用,以便:

this.something = "foo";
Run Code Online (Sandbox Code Playgroud)

成为这个:

something = "foo";
Run Code Online (Sandbox Code Playgroud)

有这样的东西(我正在使用Android Studio 1.2),还是我必须运行正则表达式替换并确保没有任何破坏?

java android this intellij-idea android-studio

13
推荐指数
1
解决办法
1391
查看次数

在C#虚拟方法中,"this"可以为null吗?其他实例方法会发生什么?

我很好奇是否有一种方法this可以在C#中的虚方法中为null.我认为这是不可能的.我在现有代码中看到,在代码审查期间,我希望100%肯定对其删除进行评论,但我想要一些确认和社区的更多上下文.this != null在任何非静态/实例方法中都是这种情况吗?否则它会是一个空指针异常对吗?我正在考虑扩展方法以及我可能不熟悉多年Java的C#特性.

c# il this c#-4.0

13
推荐指数
3
解决办法
1728
查看次数

什么时候这个'这个'是左值?

我知道类型thisprvalue("纯"rvalue)指针,并且它可以通过附加关键字成为指向const的指针和/或指向volatile的指针(影响对其实例变量的访问)const或者volatile它所属的函数定义的末尾.

我也知道this有时(错误地)将其描述为一个const指针,也许是为了说"你不能做出任务this".作为右值,它本质上是不可分配的,因此不需要constrvalue 的概念.

我也知道在C++ 11中,有些情况下rvalue或左值会影响调用解析,但我试图解决这些可能性,而且我不确定是否存在实际情况调用分辨率this是一个右值指针而不是一个const左值指针.

从程序员的角度来看,是否存在这种区别产生真正差异的情况,例如可以使用const左值指针而不能使用左值指针的上下文,其中可以使用左值指针不能使用const左值指针,或者差异会影响呼叫解决?

c++ this language-lawyer c++11

13
推荐指数
1
解决办法
272
查看次数

Angular2自定义表单验证器在类中失去对"this"的访问权限

我正在构建一个Angular 2应用程序(2.0),我有一个使用该ReactiveForms模块的表单.因此,我在输入字段上使用验证器函数,包括自定义验证器.这很好用.

我的问题是我也在尝试在表单字段上使用自定义AsyncValidator.它似乎很直接,但我永远不能在AsyncValidator方法中引用类中的属性.

FormGroupFormControl的形式本身和输入字段属性看起来像这样在组件的类:

form: FormGroup;
userName = new FormControl("", [Validators.required], [this.userNameAsyncValidator]);
Run Code Online (Sandbox Code Playgroud)

还有一个FormBuilderngOnInit(),重视形式的功能form属性.

constructor(private fb: FormBuilder, // this.fb comes from here
          private css: ClientSecurityService) { // this.css comes from here
}

ngOnInit() {
  this.form = this.fb.group({
      "userName": this.userName
    }
  );
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在AsyncValidator中,我无法引用我在组件类中定义的任何服务 - 包括this.css.这是验证器:

userNameAsyncValidator(control: FormControl): {[key: string]: any} {
  return new Promise(resolve => {
    this.css.getUrl()
      .subscribe(
        data => {
          console.log('Returned http data:', data);
          resolve(null);
        }, …
Run Code Online (Sandbox Code Playgroud)

validation this typescript angular

13
推荐指数
1
解决办法
2931
查看次数