在许多面向对象的编程语言中引用当前类实例或对象的关键字。
我正在尝试开发一个小游戏,但遇到以下问题:我有一个伪类“Cannon”,每个Cannon都有一个存储它应该守卫的区域的数组和一个存储“入侵...
例如,我想要一个被许多元素使用的函数来获取调用元素的属性。 函数示例(){ var name = //调用元素的名称 "$(this).attr('name')" } ...
我定义了一个JavaScript对象,其中有两个函数test1和test2。 当我使用 this.test1() 在 test2 中调用 test1 时,它说 test1 不是一个函数 当我打电话给 test1 时我...
当我在 DOM 事件属性中调用函数时,如何确保它可以访问事件的 `this`?
我试图在单击事件发生时调用函数。 在函数本身中,我提到了这一点: 函数移动(e){ var myId = this.id; 控制台.log(myId); } 我试图在 click 事件发生时调用函数。 在函数本身中,我指的是this: function move(e) { var myId = this.id; console.log(myId); } <button id="A1" onclick="move()">#A1</button> <button id="A2" onclick="move()">#A2</button> <button id="A3" onclick="move()">#A3</button> 但是我运行整个过程,控制台显示“未定义”。当我尝试 alert(this); 时,我得到“[对象窗口]”。 我该如何解决这个问题? this 是代码中的 window 对象。 您可以传递 this 作为参数。 <td id="A1" onclick="move(this)" class="white"></td> 然后: function move(ele){ var myId = ele.id; alert("myId"); } 当从事件处理程序调用函数时,其 this 不是由处理程序设置的(尽管您可以根据 Xdazz 的答案从处理程序传递 this,或根据 Kyle 的答案设置 this)。另一种方法是从与事件关联的事件对象中提取发送者元素: function move(e) { if (!e) e = window.event; var sender = e.srcElement || e.target; //maybe some nested element.. find the actual table cell parent. while (sender && sender.nodeName.toLowerCase() != "td") sender = sender.parentNode; var myId = sender.id; alert(myId); } 您还必须显式传递事件: onclick="move(event)" 请注意,当表格单元格具有嵌套元素时,它们将成为“发送者”,因此要获取所需的元素(即表格单元格),您必须向上遍历。 为了避免所有这些令人头疼的问题,请参阅下面如何通过代码附加处理程序。 现场测试用例. 也就是说,更好的做法是通过代码而不是内联绑定点击事件 - 不要将 HTML 与 JavaScript 混合。为了实现这一点,有这样的代码: window.onload = function() { var arrCells = document.getElementsByTagName("td"); for (var i = 0; i < arrCells.length; i++) { var oCell = arrCells[i]; if (oCell.id && oCell.id.substr(0, 1) == "A") { oCell.onclick = move; } } } 使用上述代码后,您可以从 HTML 中删除内联 onclick= 调用并保留原始函数 - this 将指向单击的表格单元格。 更新了小提琴。 <td id="A1" onclick="move.call(this)" class="white"></td> 现在 this 将引用 td 函数中的 move 元素。 尝试使用事件目标来获取您正在寻找的 dom 元素: function move(e) { alert(e.target); }
上周,我们制作了一个用于省略某些选择器内文本的函数。 我是这样调用这个函数的: ellipsiText('.class',50) 传递选择器和我...
如何为 HTML 元素创建 JavaScript 类构造函数
我有一个函数 element(),用于创建新元素。 函数元素(名称,类名,属性,innerText){ 函数元素(名称,类名,属性,innerText){ 常量元素...
我是一名 Javascript 新手,在解决练习时,我遇到了一个我无法弄清楚的作业, 这是练习: 全部重做 假设我们想要重做所有撤消操作。我们可以继续 重做-我...
请帮助我理解“Ajax in Action”中的这段 JavaScript 代码
我在 Ajax in Action 书中看到了这段代码,有两件事我无法理解(请记住,我刚刚开始 Web 编程,并且仍在尝试了解 JavaScript 的工作原理)。 上...
为什么 JavaScript 函数要检查 `this` 是否是同一个函数的 `instanceof`?
我认为这是在查看这个对象是否已经被实例化并且存在于范围内? 为什么需要用三个等号来判断呢? 函数视图模型(pa...
我目前在打字稿上碰壁了。 基本上,我想从扩展特定抽象类的类中调用静态函数。 我收到以下错误 类型“typeo”的“this”上下文...
查看 Linkedlist.java,我观察到一个重载的构造函数,其中一个包含一个空的 this()。 一般来说,我在默认参数下看到过这个。在 i 中没有参数的 this() 有什么用...
Function.prototype.bind = function() { var _this = 这个, 原来= _this, args = Array.prototype.slice.call(参数), _obj = args.shift(), func = 函数() {...
在类字段属性上定义的 getter/setter 中使用“this”。如何在子属性上定义类字段 getter/setter?
所讨论的问题与人类可读性和数据组织有关。我想将 getter 和 setter 指定为类字段属性的子级,但是我无法让它引用...
这段代码有什么问题? obj.bVar 在这里未定义,为什么呢?如何将 aVar 的值赋给 bVar? var 对象 = { 变量:15, bVar: this.aVar // 这是未定义的 }; 控制台....
在 underscore.js 源代码的开头,您会看到以下内容: var 根=这个; var previousUnderscore = root._; 那么问题就变成了为什么作者不直接写: var previous下划线...
ESLint 不允许/禁止 `this` 返回类型以达到详细程度
如何使用 ESLint 无限制语法规则来禁止/禁止 this 关键字用作函数和类方法的返回类型。
致命错误:不在对象上下文中使用 $this 但一切看起来都很好
我上过这门课: 我上过这门课: <?php class acController { protected $_enabledPages = array( 'front_login.php', ); protected $_enabledDirectories = array ( 'admin' ); public static function isAuthorized() { echo '<pre>'; acController::checkResource($_SERVER['SCRIPT_URI'], $this->_enabledDirectories); acController::checkResource($_SERVER['SCRIPT_URI'], $this->_enabledDirectories); echo '</pre>'; } protected static function checkResource($urlAddress, $addressArray) {} } ?> 我收到了这个错误: 致命错误:不在对象上下文中使用 $this 但是在这种情况下,$this在类中使用,我无法理解问题出在哪里。在其他文件中,我通过 acController::isAuthorized(); 获取信息 在静态函数中,你不能使用$this。 $this 暗示对象(类的实例)的存在。而 static 意味着调用一个类。 来自 PHP 文档: 因为静态方法无需对象实例即可调用 创建后,伪变量 $this 在方法内不可用 声明为静态。 你有问题,因为你的方法是静态的。这表示类的一个实例,但如果将其用作静态,则可以在没有类的任何实例的情况下使用这些方法。所以你不能用静态来做到这一点。
私有 props 在子类方法范围内的类中返回未修改或丢失的值
所以,我有两个类服务类和实体类,带有私有构造函数和静态异步方法,用于创建类的新实例。我的服务类创建并调用新的实体类
我是一个Javascript新手,在学习课程时,一切都很顺利,直到我到达课程的“原型链”部分。 我来这里是想问是否有人可以向我解释一下这个问题