问题标签 [this-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
462 浏览

c++ - 在成员函数中使用“删除这个”后,我可以访问其他成员函数。为什么?

我刚刚写了一个示例程序来查看删除这个的行为

问题

  1. 在 fun() 中执行delete this后,如何使用 fun() 中的指针访问 func_2() ?
  2. 现在主要是如何在删除该指针时执行obj->fun_2 ?
  3. 如果我能够在杀死这个对象后访问函数成员,那么为什么数据成员的值为零'0'?

m 使用 linux ubuntu 和 g++ 编译器

0 投票
4 回答
13923 浏览

javascript - jQuery $(this) 内部函数

我想将 $(this) 传递给函数,但我不确定。有一个类似的线程,但我仍然无法使其工作。我希望有人能帮助我。

0 投票
2 回答
58 浏览

javascript - 为什么这两个事件处理程序中的上下文不同

这是一个基础问题,但我无法弄清楚为什么上下文(“this”指针)在第二个事件处理程序中是正确的,而在第一个事件处理程序中是不正确的。

我有这个简单的构造函数来创建对象 myNotifier:

然后我将该myNotifier.saySomething()方法用作 CLICK 两个按钮的事件处理程序:

第一个显示:“我说:未定义” 第二个显示:“我说:HELLO”

我知道调用方法时上下文(this)不是原始对象,但是为什么在第二个按钮的函数内部调用时它是正确的?

一个要测试的 jsfiddle

0 投票
2 回答
2230 浏览

c++ - 不可能:此指针作为默认参数。为什么?

以下代码将无法编译。为什么?

编辑,为清楚起见。这就是我试图做的,使用更少的代码行......

0 投票
2 回答
113 浏览

c++ - 相同的 this 指针和可变参数类型的麻烦

我希望只输入一段我不明白它为什么会这样的代码是可以的。

下面的代码有两个问题。

1)为什么this两个实例的指针显示相同的值?这里是程序的输出:

它显示 2 倍的值0x7ffff1743950。这让我很惊讶,因为我确信第一个实例在创建第二个实例之前没有被破坏。

2)我尝试制作设置为原始PS位置的深层副本。orig_ptr这里使用的设置是递归模板实例化设置。因此orig_ptr,在每个级别上都应该尊重层次结构并相应地指出。我不明白的是为什么代码编译F{{(void(Is),j,ptr->F[Is])...}}(它在代码中标记),为什么它不编译F{{(void(Is),j,&ptr->F[Is])...}}?(我认为这是正确的)。我看不到编译器正在调用T(aka )的哪个构造函数。RS<WJ<float> >不仅存在RS<WJ<float> >::RS(Jit&,RS<WJ<float> >)指针版本。

** 编辑 **

我添加了指针接口,WJ以便实例化过程F可以全程递归。我认为这可能是由于 SFINE。但事实并非如此。

用 g++-4.7 (Ubuntu/Linaro 4.7.2-4precise1) 4.7.2 和-O0.

** 编辑 **

@sehe 的回答为我指明了正确的方向。当然,第二种构造函数void(Is)中不需要。JV只有在第一种类型中,它用于模拟std::fill. 但是我们在初始化列表中!序列运算符的默认实现有助于(void)Is完全消除。

现在在第二种情况下还有另一种用法Is,即in ptr->F[Is],所以不用人工介绍了void。现在,这看起来更好:

** 编辑 **

它现在编译并运行良好!

然而,问题 1 仍然存在:为什么this2x 相同?!?

0 投票
1 回答
92 浏览

php - 当我存储到数组时,PHP 类属性被覆盖

对此可能有一个非常简单的解释,但是我已经让这段代码工作了几个月,现在突然间今天它不起作用了。

我从表中检索所有行。我有和对象,它是我从中选择的表的实体模型。当我从关联结果数组中读取行时,我使用“$this->propertyName”存储每个属性,然后将每个对象推送到一个数组中。在我以对象数组结束之前,现在我以重复相同对象的数组结束。这是一个代码片段:

对于每个属性,我的 getter 和 setter 看起来像这样:

和建议或想法?

-TU

0 投票
3 回答
97 浏览

c++ - 如何将重载运算符应用于此?

如何在 C++ 类的另一个成员函数中调用重载运算符?

0 投票
3 回答
986 浏览

php - 构造函数和 this 指针

问题是:在声明“private $json”之后,我应该在构造函数 $json 还是 $this->json 中使用?

0 投票
1 回答
1255 浏览

c++ - 围绕递归函数的 lambda 包装器中的 this-pointer 捕获

我有一个Wrap<T>带有递归成员函数的类模板test(int),我想将它传递给带有 lambda 的 STL 算法(std::accumulate在下面的代码中)。

如果我使用默认的捕获列表=,并创建我的递归成员函数static,一切都很好并得到我想要的结果。

但是,如果我将其设为非静态成员函数,Visual C++ 和 gcc 4.7.2 都会抱怨一个未初始化的this-pointer,除非我将递归调用限定为this->test().

LiveWorkSpace上的输出:

取消注释该/*this->/*部分,给出与静态成员函数相同的结果。

为什么我需要用 来限定我的递归调用this->

0 投票
2 回答
1000 浏览

c++ - 将此实例作为回调参数发送

我有简单的 UI 类,我需要将 UI 元素实例发送到每个元素的回调,所以我可以(很像在 javascript 中)操作调用回调的元素。
这需要将实例发送this到注册为回调的函数。我怎么做?
当前状态:

现在,有调用回调的函数:

所以,我可以在回调中做这样的事情: