js 大佬不懂为啥原因之 a 对象的 b 方法
网友提问:
在 html5 中使用 jquery 时遇到了问题,如下代码所示:
<script> $(function() { var temp = new a(); temp.b(); }) var a = function() { var b = function() { alert(1); } } </script>
登录后复制
然而,运行代码时却报错。请问原因是什么?
回答:
立即学习“Java免费学习笔记(深入)”;
问题出在对 a 构造函数的定义上。正确写法如下:
var a = function() { this.b = function() { alert(1); }; };
登录后复制
在你的写法中,b 函数并没有绑定到 a 对象上,而仅仅在 a 函数内部定义了。因此,实例化 a 后,无法通过 temp.b() 调用 b 函数。
原理解释:
在 javascript 中,对象可以通过构造函数创建。构造函数的作用是为对象创建属性和方法。在你的案例中,a 函数是一个构造函数,它定义了 b 属性,但没有将其与 a 对象关联起来。
要正确绑定方法,需要使用 this 关键字。this 关键字指向当前对象,因此 this.b 表示当前对象(即 a 对象)的 b 方法。
以上就是JavaScript 构造函数中方法定义为何无法被调用?的详细内容,更多请关注抖狐科技其它相关文章!
-
黑神话首支纪录片独家首播: 路在脚下|对话杨奇:《黑神话:悟空》的美术开发之路
中国游戏行业诞生过许多优秀的作品,但玩家们等待一次全民狂欢已经太久。3天销量超1000万,Steam超60万条评价,95%好评如潮,Steam单平台240万人同时在线,黑神话空前热度点燃了中国玩家沉寂...
-
如何解决固定列中的 div 元素无法超出边界的问题?
固定列中 p 的绝对定位超出边界问题 你在固定的列中放置了一个 class 为 popp 的 p,但它无法超出固定列,而是在超出部分被隐藏。即使取消该元素的 overflow:hidden 样式,问题...
-
cad hide 命令如何消除
cad 的隐藏命令可用于隐藏选定的对象,使其暂时从绘图中消失,以便专注于其他区域或提高可读性。步骤如下:选择要隐藏的对象。输入命令“隐藏”或“hi”。选择可见性:选择“是”隐藏、“否”可见。如何使用...
-
initpki.dll找不到指定模块怎么解决
initpki.dll是Windows操作系统中的一个重要文件,它负责支持加密和证书功能。然而,有时候我们可能会遇到initpki.dll找不到指定模块的问题,导致各种加密和证书功能无法正常运行。接下...
-
pancakeswap怎么看资金池?
本文旨在指导用户了解 pancakeswap 上资金池的查看方式。pancakeswap 是一个去中心化交易所平台,允许用户买卖数字资产。资金池是买卖数字资产的基本概念,本文将提供分步指南,帮助用户了...