标签: this

这个值在JavaScript匿名函数中

任何人都可以向我解释为什么A是真的并且B是假的?我本以为B也是如此.

function MyObject() {

};

MyObject.prototype.test = function () {
    console.log("A", this instanceof MyObject);
    (function () {
        console.log("B", this instanceof MyObject);
    }());
}

new MyObject().test();
Run Code Online (Sandbox Code Playgroud)

javascript this anonymous-function

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

这和Activity.this有什么区别

例如

Intent intent = new Intent(this, SecondActivity.class);
Run Code Online (Sandbox Code Playgroud)

eclipse错误:Intent类型中的方法setClass(Context,Class)不适用于参数(FirstActivity.ClickEvent,Class)

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Run Code Online (Sandbox Code Playgroud)

但这是正确的.谁能解释这两者之间的区别?谢谢.

java syntax android this android-activity

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

可能的分段错误:我是否正确使用"this->"运算符?

我正在做一个我有问题的作业问题.如果你不方便协助解决作业问题,我应该说我的导师鼓励我们在完全难倒的时候在这个网站上寻求帮助.另外,我已经完成了自己的任务的基本部分,现在我正在做一个可选的挑战问题.无论如何,关于问题!

作为一般的OOP和C++的新手,我无法理解"this->"运算符.我们没有在课堂上介绍它,但我已经在其他地方看到了它,我猜它是如何被使用的.

对于作业,我必须创建一个基于控制台的Tic-Tac-Toe游戏.只有作业的挑战部分需要我们创建一个AI对手,而我们没有获得任何额外的功劳来应对挑战,我只是想知道如何去做.我正在研究像minimax和游戏树这样的东西,但是现在我只是想创建一个"选择一个随机的,开放的"功能.

我有一个名为TicTacToe的课程,它基本上就是整个课程.我将在下面发布与问题相关的部分,但是给我一个错误的部分是这个子程序:

void TicTacToe::makeAutoMove(){
    srand(time(NULL));
    int row = rand() % 3 + 1;
    int col = rand() % 3 + 1;
    if(this->isValidMove(row, col)){
        this->makeMove(row, col);
    }else{
        this->makeAutoMove();
    }
}
Run Code Online (Sandbox Code Playgroud)

这个函数唯一要做的就是在板上移动,假设它是开放的.董事会的设置如下:

char board[4][4];
Run Code Online (Sandbox Code Playgroud)

当我打印它时,它看起来像:

   1  2  3
1  -  -  - 
2  -  -  -
3  -  -  -
Run Code Online (Sandbox Code Playgroud)

问题在于,有时计算机会进行移动,因为函数的随机性,我会发现一个难以追踪的错误.我认为这是一个段错误,但我无法分辨,因为我无法在调试器中复制它.

我认为"this->"运算符用作指针,如果指针为NULL并且它被访问它可能会给我这个问题.它是否正确?有没有办法来解决这个问题?

我理解这对社区的许多成员来说可能是一个非常低级别的问题,但我会感谢你的帮助,只要它没有附带关于这是多么微不足道的讽刺言论,或者我必须是多么愚蠢.我在学习,这意味着我有时会遇到一些愚蠢的问题.

如果它有帮助,这里有更多我的.cpp文件:

TicTacToe::TicTacToe()
{
    for(int row = 0; row < kNumRows; row++){
        for(int col = 0; col < kNumCols; col++){
            if(col == 0 && …
Run Code Online (Sandbox Code Playgroud)

c++ oop this

24
推荐指数
4
解决办法
882
查看次数

在C++中过度使用`this`

我正在处理一个大型代码库,它始终使用以下构造

class MyClass
{
public:
  void f(int x);
private:
  int x;
};


void MyClass::f(int x)
{
'
'
  this->x = x;
'
'
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我总是使用,因此更喜欢这种形式

class MyClass
{
public:
  void f(int x);
private:
  int _x;
};


void MyClass::f(int x)
{
'
'
  _x = x;
'
'
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢后者的原因是它更简洁(更少的代码=更少的潜在错误),并且我不喜欢在范围内同时拥有多个同名的变量,我可以避免它.也就是说,我现在越来越多地看到以前的用法.我不知道第二种方法有什么好处吗?(例如,对编译时的影响,使用模板化代码等等)两种方法的优点是否足够重要,另一方面是否重构?我要问的原因是,虽然我不喜欢代码中存在的第二种方法,但是引入更多错误的工作量和相关风险并不值得重构.

c++ refactoring this

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

我应该在课堂上使用`this`吗?

在C++中的一个类的成员函数中,如果我使用this->dataMember或只是 dataMember?它会有所作为吗?什么被认为是更好的风格?有任何性能差异吗?

(我不是在谈论局部变量与数据成员同名的情况,在这种情况下,据我所知,您必须使用它this->来区分它们.)

c++ class this

23
推荐指数
4
解决办法
3万
查看次数

23
推荐指数
2
解决办法
2603
查看次数

这对vs(这个)

可能重复:
jQuery $(this)vs this

我是新手,并试图让我的概念正确.有许多使用" this"和" $(this)"的情况.有人可以解释我们使用两个不同的"这个"的区别和条件吗?

javascript jquery this

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

jQuery如果"this"包含

我正在尝试将包含特定文本字符串的任何元素更改为红色.在我的例子中,我可以让子元素变为蓝色,但是我写的"替换我"行的方式是不正确的; 红色变化不会发生.我注意到"包含"方法通常写成:contains但我无法通过验证$(this).

$('#main-content-panel .entry').each(function() {
       $(this).css('color', 'blue');      
});         

$('#main-content-panel .entry').each(function() {
   if($(this).contains("Replace Me").length > 0) {
        $(this).css('color', 'red'); 
    }      
});
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/zatHH/

jquery contains this

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

如何摆脱本地函数中的`this`关键字?

我正在编写一个小型JavaScript游戏框架,并经常使用对象的属性,比如

this.depth = this.y;
Run Code Online (Sandbox Code Playgroud)

但这些this'非常令人讨厌@ _ @.有没有办法写...

depth = y;
Run Code Online (Sandbox Code Playgroud)

......不影响全球对象?

我的情况下,通过两个工厂函数创建的,并且他们做预定义变量的一个有限列表,所以个个都depth,y等等的功能被应用于实例.apply()方法,尽管这一切可能会发生变化.

我需要省略this关键字的原因是该框架不仅适用于我,也适用于其他人.我不需要this在框架中删除,但this关键字在编写基于此库的应用程序时会花费很多时间.到目前为止,我所知道的唯一解决方案是制作"私有"变量,但它给以前没有使用过JavaScript的人带来了一些不便,而且从obj2操纵obj1会导致许多匿名函数.apply- 甚至更多地狱.所以,正如我所看到的,JavaScript中没有灵丹妙药.

构造函数:

/*...*/
'Copy' : function (type) {
  var obj = {
    'x':0,
    'y':0,
    'xprev':0,
    'yprev':0,
    /*...*/
  };
  return obj;
},
'make' : function (type,x,y) {
  obj = ct.types.Copy(type);
  obj.x = obj.xprev = obj.xstart = x;
  obj.y = obj.yprev = obj.ystart = y;

  /*...*/

  ct.stack.push(obj);
}
/*...*/
Run Code Online (Sandbox Code Playgroud)

javascript this

22
推荐指数
1
解决办法
2636
查看次数

在这个例子中,"this"的上下文是什么?

为什么这两行创建不同的值this

<div>
  <a href="#" id= "li2" onclick="alert(this)"> a link </a> 
</div>
<p id= "p2" onclick="alert(this)"> a paragraph </p>
Run Code Online (Sandbox Code Playgroud)

第一个用文件的URI警告,第二个用"HTML段落元素"警告.换句话说,第二个上下文是DOM元素,但第一个是主要上下文.

我做的这个研究有很多,其中一些是有点过我的头,所以如果有人知道答案,你可以哑下来给我吗?

javascript this

22
推荐指数
1
解决办法
864
查看次数