问题标签 [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.
jquery - JQuery:指的是正确的“this”
我正在尝试编写一个非常简单的插件,在锚鼠标悬停时会增加相应的锚文本大小,而在鼠标悬停时会删除锚。问题是我无法得到正确的“这个”。所以我有:
我这样称呼它:
我想我应该使用类似.call()
or的东西.apply()
,但我不确定如何使用,我找不到好的资源。
javascript - 如何获取 Javascript 匿名函数的“this”(范围)?
假设我有一个匿名函数需要对其上下文进行操作,但它是绑定到“窗口”还是绑定到未知对象是不同的。
如何获取对调用匿名函数的对象的引用?
编辑,一些代码:
你可能会合理地问,你到底为什么想做这样的事情。好吧,我首先想解压缩作为数组传递的参数。就像 Python " *
" 运算符所做的那样:
我在 SO 中进行了挖掘,发现了一篇告诉使用“apply()”的帖子:
有趣的是,如果在对象中,它将使用当前的“this”,如果不是,则使用“window”。
但我认为有一个问题:
如果“bar()”本身在一个对象中,那么“this”将引用“bar()”容器,因此它不起作用。
顺便说一句,我不想将范围作为参数传递。
我当然可以将参数和函数连接为字符串,然后使用 eval,但我只想在找不到更干净的东西时才使用它。
当然,如果这是不可能的(毕竟,它可能是),那么我会这样做:
编辑 2:完整场景,如评论中所述。
我正在使用 qunit 在 Javascript 中执行单元测试。这很酷,但我错过了一种检查是否引发异常的方法。
最基本的测试就是这样完成的:
这个想法是制作类似的东西:
如果我能摆脱 eval,那就太好了。为什么我不想将范围用作参数?因为您可能希望循环引用具有不同范围的 20 个函数的容器,并在循环中对它们进行全部测试,而不是手动编写这些东西。
java - Java 中 this 关键字的其他用法
(对于阅读我上一个问题的人来说,这是同一个老师和同一个项目。)
我的老师“检查”了我的 Web 应用程序项目代码并提供了一些建议。建议之一是即使在这种情况下也使用this
关键字:
所以如果我听从他的建议,那将变成:
我问他为什么,他告诉我 this 关键字除了用于消除歧义之外还有另一种用法。快速谷歌搜索没有返回 this 关键字的其他用法的结果。甚至Sun 的 Java 教程也没有提到适合这种情况的其他用法。
javascript - Javascript:将 OOP 方法附加到事件和“this”关键字
我是 OOP Javascript 的新手,在this
关键字和事件方面遇到了麻烦。
我想要实现的是:我有多个 DOM 对象,并且不仅希望将公共事件绑定到它们,而且希望将有关上述对象的一些数据保存在全局容器中(以提高运行时性能)。
所以我所做的基本上是这样的:
稍后,在文档正文中,我可以添加以下内容:
更进一步,通过以下方式添加 DOM 元素:
不需要进一步的实现代码。
问题:如何在and方法中访问JS 类实例而不是window 元素。init
scroll
我知道,它不必通过this
关键字,但我仍然没有想出任何东西。
附言
addEvent
是一个非常基本的附加事件的功能,它只是对 IE/Fx 友好,没有其他功能。- 我正在编写的代码已经是功能性的,但是在程序形式上,我只是想对它进行 OOP。
- 作为一个小问题,我以某种方式得到了这样的印象,即在 javascript 中不鼓励 getter/setter 方法,如果我使用它们可以吗?
c++ - 类中的“this”指针
问题很简单......出于某种原因直接使用 this->yourvariable 或 yourvariable 有什么区别吗?
我没有发现任何问题,但我经常使用这个-> 并且想知道在继续之前是否有任何区别。
我在这里看到了一篇帖子的评论,我不记得是哪个帖子了,但是那个人说了一些关于使用关键字“this”的事情。
就个人而言,我觉得直接使用变量比直接使用更好。它使代码更容易和漂亮。
乔
java - Drools 中出现的 this[''] 访问器是什么
只是在寻找一种将参数传递给Drools中的 getter 的方法......
我在 Eclipse Ganymede 中注意到智能感知有助于确定可用于在 Drools WHERE 子句中选择实体的 getter。只需键入一个字母并按 ctrl+Space 即可查看列表。我在Drools.NET中有另一个项目,它依赖于 C# 属性而不是 get 方法。 C#.NET允许你定义一个默认属性,public String this[String key]
这样你就可以引用一个没有任何属性的列表myInstance["myKeyString"]
,我在Drools.NET中使用了它。我希望this['']
出现在Java Drools中 WHERE 子句实体选择器的花括号之间的选项myInstance : myClass { ... }
指的是类似的东西。
这是真的吗?如果是这样,我该如何使用它?
c++ - 访问派生类中类的受保护成员
我这里有一个旧代码库,他们使用受保护的成员变量。这是否是一个好主意可以讨论。但是,代码必须用 gcc3 编译得很好。我有一个派生模板类 Bar,它使用类模板 Foo 中的受保护成员 x 像这样
在 cleanup() 的方法声明中,x 做了一些事情
这不适用于 gcc4,尽管它应该适用于 gcc3。当我将其更改为
为什么会这样?
jquery - 在 jquery 中确定 $(this)
我遇到的一个常见问题是对 $(this) 所指的内容感到困惑。
我经常会尝试给它一些奇怪的风格:
这有时会有所帮助。
但是,我对以下内容感到困惑。我的问题或许可以通过两种方式来回答:
1)在任何给定情况下,是否有一种通用的方法可以“查看” $(this) 所指的内容?也许与萤火虫结合使用?
2)更具体地说,知道下面这个示例中的 $(this) 应该指什么吗?我认为这将是一类 btnSave 的输入,但似乎不是:
this - Ada 中有“this”关键字吗?
具体来说,有没有办法让任务获得对自身的引用?
例如:
php - 为什么 self::function() 和 $self->variable 或 self::$variable 即使有 $this->function() 和 $this->variable (PHP)?
我对这两个关键字以及在 PHP5 中使用它们的方式感到困惑。我认为“this”用于实例化对象(非静态),而“self”指的是对象本身,而不是它的实例,因此在静态对象中使用。对?
现在,我相信在类的静态方法中调用另一个静态变量/方法的正确用法如下:
确实如此?
但是,以下似乎也是可能的:
然而, $testVar 是静态的。这是为什么?
另外,为什么有时会在 self 前面使用 $ 有时不使用 $,并且对于“this”关键字也有同样的问题?