问题标签 [this]
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.
javascript - 轻松设置“this”变量?
我对 Javascript 有很好的理解,除了我想不出一种设置“this”变量的好方法。考虑:
如果没有最后 4 行,有没有办法做到这一点?这很烦人......我尝试绑定一个匿名函数,我认为它既漂亮又聪明,但无济于事:
显然,将变量传递给 myFunction 是一种选择......但这不是这个问题的重点。
谢谢。
javascript - Javascript `this` 不像我想的那样工作?
我正在将一个非常基本的 js 函数改编成一个类。无论如何,基本上它只是在主页上方创建一个浮动容器。我知道它不完整,但我正在输入它,并且在尝试调用 close() 函数时不断被抓住。Firefox 返回 athis.sdiv
未定义。我很困惑当 close() 是 Pop 的方法并且 sdiv 是在 Pop 类的第一行中定义的情况下怎么会出现这种情况?
提前感谢您的帮助
c# - VB.NET 中的常见事件处理程序
我的表单上有大约 10 个按钮,我希望它们调用相同的 Click 事件处理程序。
但为此我需要通用事件处理程序,并且我们在 VB.NET 中没有“this”关键字来引用导致事件的控件。
如何在 VB.NET 中实现“this”关键字的功能?
我希望能够编写一个执行以下操作的事件处理程序:
java - Java中“this”的使用
如果我写以下课程:
程序可以编译,但是当我运行程序时,main方法会打印出两个0。我知道,为了说我想在构造函数中初始化实例变量,我必须写:
但是如果我不写它,那么在构造函数中(在表达式的左侧和写手侧)评估(或考虑)哪个变量?是参数还是实例变量?这有什么不同吗?
是否还有其他this
必须使用的情况?
java - 将“this”与方法一起使用(在 Java 中)
在 Java 中将“this”与方法一起使用怎么样?它是可选的还是在某些情况下需要强制使用?
我遇到的唯一情况是在类中调用方法中的方法。但它是可选的。这是一个愚蠢的例子,只是为了说明我的意思:
jquery - 在 jQuery 事件中控制“this”的值
我使用 jQuery 创建了一个“控件”,并使用 jQuery.extend 来帮助使其尽可能地面向对象。
在我的控件初始化期间,我连接了各种点击事件,如下所示
请注意,我将“this”作为绑定方法中的数据参数。我这样做是为了获取附加到控件实例的数据,而不是从触发点击事件的元素中获取数据。
这很好用,但是我怀疑有更好的方法
在过去使用过 Prototype 之后,我记得一种绑定语法,它允许您控制事件中 'this' 的值。
什么是jQuery方式?
javascript - 如何在其成员函数之一中引用对象?
我有以下内容:
o.f(fn)
调用fn
wherethis
绑定到 o。
在 HERE,我想用来this
访问 ob。但是,当ob.f
被调用时,this
必然会o
. 我认为 JQuery 是这样工作的。例如:
我现在正在做的是:
但出于文体原因,我不喜欢上面的内容:
- 使用
new
运算符听起来像太经典的 OOP。 - 定义
class Ob
usingfunction
并不直观(至少在开始时)。
这就是为什么我试图ob
用对象文字来定义。但是我找不到在函数中引用对象ob
的方法,该函数使用设置this
为其他对象的方法调用而不是ob
.
我可以执行以下操作:
但我不知道如何考虑以上因素。我试过:
那么,有没有办法在对象内部的函数中可靠地引用对象(this
可以根据上下文绑定到任何东西)?
c++ - C++ 中带有“this”的智能指针
我一直致力于用引用计数指针替换原始指针,这些指针仅公开底层指针的 const 版本。我的目标是减少内存使用(以及不必要地构造和破坏复杂对象所花费的时间),而不会让自己陷入任何代码都可以访问它不拥有的内存的情况。我知道引用计数的循环引用问题,但我的代码不应该造成这种情况。
要求 const-ness 是可行的,因为我使用的系统中类通常不公开非 const 成员,而不是更改对象,您必须在其上调用一个方法,该方法返回由更改产生的新对象。这可能是一种设计模式,但我不知道它的名称。
当我有一个方法返回指向其类型对象的指针时,我的问题就出现了,有时它本身就是。以前它看起来像这样:
我看不到让它返回智能指针的好方法。天真的方法类似于return CRcPtr< Foo >( this )
,但这会破坏所有权语义,因为我返回的内容以及以前拥有该对象的人现在都认为他们拥有所有权但彼此不了解。唯一安全的做法是return CRcPtr< Foo >( new Foo( *this ) )
,但这违背了我限制不必要的内存使用的意图。
有没有办法在不分配任何额外内存的情况下安全地返回智能指针?我的怀疑是没有。如果有,如果对象已在堆栈上分配,它将如何工作? 这个问题似乎相关,但并不相同,因为他可以让他的函数将原始指针作为参数,并且因为他使用的是 boost 库。
作为参考,我的自制智能指针实现如下。我相信它可能会更强大,但它比依赖于任何地方都可用的 boost 或 tr1 更便携,并且在这个问题之前它对我来说效果很好。
编辑:感谢您的回复。我希望避免使用 boost 或 tr1,但我认识到不使用经过良好测试的库通常是不明智的。我相当确定我所实现的与 std::auto_ptr不相似,而是与 tr1::shared_ptr 相似,只是它只公开了内部指针的 const 版本并且缺少正式版本中的一些功能。我真的很想避免像 Gian Paolo 提出的那种侵入式方案。我知道我的实现不是线程安全的,但这是一个单线程应用程序。
javascript - 火狐这个功能
为什么 Firefox 不处理这个。此代码适用于 IE。
c++ - 为什么'this'是指针而不是引用?
我正在阅读这个问题C++ 利弊的答案,并在阅读评论时遇到了这个疑问。
程序员经常发现“this”是指针而不是引用令人困惑。另一个困惑是为什么“hello”不是 std::string 类型,而是评估为 char const*(指针)(在数组到指针转换之后) – Johannes Schaub - 2008 年 12 月 22 日 1:56
这只表明它没有使用与其他(后来的)语言相同的约定。– le dorfier 2008 年 12 月 22 日 3:35
不过,我将“这个”事情称为一个非常微不足道的问题。哎呀,感谢您在我的未定义行为示例中发现了一些错误。:) 虽然我不明白关于大小的信息与第一个中的任何内容有什么关系。根本不允许指针指向分配的内存之外 – jalf 2008 年 12 月 22 日 4:18
这是一个不断的指针吗?– yesraaj 2008 年 12 月 22 日在 6:35
如果方法是 const int getFoo() const; 这可以是常量 <- 在 getFoo 的范围内,“this”是常量,因此是只读的。这可以防止错误并为调用者提供一定程度的保证,即对象不会更改。– Doug T. 2008 年 12 月 22 日 16:42
你不能重新分配“这个”。即你不能做“this = &other;”,因为这是一个右值。但这是 T* 类型,而不是 T const 类型。即它是一个非常量指针。如果你在一个 const 方法中,那么它是一个指向 const 的指针。常数。但指针本身是非常量的 – Johannes Schaub - 2008 年 12 月 22 日 17:53
像这样想“this”:#define this (this_ + 0) 其中编译器创建“this_”作为指向对象的指针,并使“this”成为关键字。您不能分配“this”,因为 (this_ + 0) 是一个右值。当然不是这样(没有这样的宏),但它可以帮助理解它 – Johannes Schaub - 2008 年 12 月 22 日 17:55
我的问题是,为什么this
指针不是引用?使它成为指针的任何特殊原因?
一些进一步的论点为什么this
作为参考是有意义的:
- 考虑
Item 1
从More Effective C++
:当保证我们有一个有效的对象即不是 NULL 时使用引用(我的解释)。 - 此外,引用被认为比指针更安全(因为我们不能用杂散的指针搞砸内存)。
- 第三,访问引用的语法 (
.
) 比访问指针 (->
或(*)
) 更好更短。