标签: this

*这与C++相比

我明白了什么this,但*this和之间的区别是this什么?

是的,我已经用Google搜索并*this在我的教科书中阅读,但我只是不明白......

c++ this

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

在Javascript中,'this'可以为null

我有一个功能如下:

    doSomething: function () {
        var parent = null;

        if (this === null) {
            parent = 'some default value';
        } else {
            parent = this.SomeValue();
        }
    }
Run Code Online (Sandbox Code Playgroud)

父母可以设置为'某个默认值'还是检查null是多余的?

或者,如果我使用限制较少的情况怎么办:

    doSomething: function () {
        var parent = this ? this.SomeValue() : 'some default value';
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下父母可以设置为"某个默认值"吗?

javascript null this

32
推荐指数
1
解决办法
7986
查看次数

Java在构造函数中泄漏了这个

为什么IDE会抱怨"在构造函数中泄漏这个"?我一直认为这只是不好的做法.但我实际上从来没有发现为什么它是坏的.

java this

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

console.log()在控制台以外的对象上调用

我记得,当我想console.log作为一个回调参数传递给某个函数时,除非我使用该bind()方法绑定console它,否则它不起作用.

例如:

const callWithTest = callback => callback('test');
callWithTest(console.log); // That didn't use to work.
callWithTest(console.log.bind(console)); // That worked (and works) fine.
Run Code Online (Sandbox Code Playgroud)

请参阅未捕获的TypeError:javascript中的非法调用.

但是,最近我发现console.log()即使调用除控制台以外的对象,它也能正常工作.例如:

console.log.call(null, 'test');
Run Code Online (Sandbox Code Playgroud)

日志'test'.

它何时以及为何会改变?规范是否说明了什么?

javascript this function-binding console.log

32
推荐指数
1
解决办法
913
查看次数

Android:为什么必须使用getBaseContext()而不是这个

this经常参考当前的背景.但是,在某些情况下,为什么我们必须使用getBaseContext()而不是this.(这意味着使用时this会发现错误).

这是我的例子:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);            
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?>arg0, View arg1, int arg2, long arg3){
       Toast.makeText(getBaseContext(),"SELECTED", Toast.LENGTH_SHORT).show(); //this line
    }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当我更改getBaseContext()this将收到错误.

请问谁可以帮我解释一下.

android this android-context

31
推荐指数
4
解决办法
7万
查看次数

std :: move(*this)是一个好模式吗?

为了使这个代码与C++ 11引用限定符按预期工作,我必须引入一个std::move(*this)听起来不对的代码.

#include<iostream>
struct A{
    void gun() const&{std::cout << "gun const&" << std::endl;}
    void gun() &&{std::cout << "gun&&" << std::endl;}
    void fun() const&{gun();}
    void fun() &&{std::move(*this).gun();} // <-- is this correct? or is there a better option
};

int main(){
    A a; a.fun(); // prints gun const&
    A().fun(); // prints gun&&
}
Run Code Online (Sandbox Code Playgroud)

有些事情听起来不对劲.std::move必要吗?这是推荐使用吗?目前,如果我不使用它,我会遇到gun const&两种情况,这不是预期的结果.

(似乎*this总是隐式和左值引用,这是有道理的,但然后是逃避使用的唯一方法move)

clang 3.4和测试gcc 4.8.3.

编辑:这是我从@hvd回答中理解的:

1)std::move(*this)在语法和概念上是正确的

2)但是,如果 …

c++ this lvalue move-semantics c++11

31
推荐指数
1
解决办法
3129
查看次数

如何在forEach循环内使用'this'进行调用

在以下对象中,我使用'this'引用时遇到问题:

function SampleObject(){
    this.addObject = function(object){...}
    ...
    // more code here
    ...
    this.addNewObjects= function(arr){
        arr.forEach( function (obj) {
            this.addObject(new Obj(obj.prop1, obj.prop2));
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设上下文正在改变,'this'指的是迭代的'obj',而不是'SampleObject'.我已经使用正常的for循环解决了这个问题,但是,我知道为什么这不起作用,并且想知道是否有另一种方法可以做到这一点.

javascript this

31
推荐指数
1
解决办法
3万
查看次数

无法获得$(this)在jQueryUI自动完成工作

我正在尝试使用jQueryUI创建一个通用的自动完成脚本.自动完成应适用于每一个:

<input type='text' class='autocomplete' id='foo'/>
<input type='text' class='autocomplete' id='bar'/>
...
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用$(this)访问源函数中的'foo'或'bar',但是在发出警报时我总是得到'undefined'.

$('input.autocomplete').autocomplete({
    source: function(req, add){
        var id = $(this).attr('id');
        alert(id);
    }
});
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

jquery jquery-ui autocomplete this

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

使用*this初始化一个类有什么后果吗?

在我写的一个小游戏中,我有一个Weapon带有两个构造函数的类,一个用于获取一些参数来生成一个自定义武器,另一个用于获取一个默认武器CHAIN_GUN:

Weapon::Weapon (void) {
    // Standard weapon
    *this = getWeapon(CHAIN_GUN);
    return;
}
Run Code Online (Sandbox Code Playgroud)

问题:使用*thisoperator=初始化课程是否会产生任何负面影响?

c++ initialization this

30
推荐指数
3
解决办法
1488
查看次数

将"this"传递给构造函数中的函数?

我可以从类构造函数中将"this"作为指针传递给函数,并在构造函数返回之前使用它指向对象的成员吗?

这样做是否安全,只要在函数调用之前正确初始化被访问的成员?

举个例子:

#include <iostream>

class Stuff
{
public:
    static void print_number(void *param)
    {
        std::cout << reinterpret_cast<Stuff*>(param)->number;
    }

    int number;

    Stuff(int number_)
        : number(number_)
    {
        print_number(this);
    }
};

void main() {
    Stuff stuff(12345);
}
Run Code Online (Sandbox Code Playgroud)

我认为这不起作用,但似乎.这种标准行为,还是仅仅是未定义的行为?

c++ constructor this

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