js 老大不解的疑惑
在浏览代码时,一位经验丰富的 js 大佬遇到了一头雾水的问题,代码如下:
$(function () { var temp = new a(); temp.b(); }); var a = function () { var b = function () { alert(1); }; }; ...
登录后复制
然而,这段代码运行时却报错,让这位大佬百思不得其解。
深入探究
经查证,问题的根源在于代码对 js 类和方法的定义和调用方式存在问题。
本来,正确的写法应该是:
var a = function () { this.b = function () { alert(1); };};var temp = new a();temp.b();
登录后复制
在这个示例中:
function a() 创建了一个匿名类。this.b 将函数 b 定义为类 a 的方法。var temp = new a() 实例化了类 a,本质上创建了一个 a 对象。temp.b() 调用了实例 temp 上的 b 方法,从而显示了警报。
误解所在
在问题代码中,函数 b 被定义在命名函数 a 的内部,而不是被分配给 this.b。这意味着 b 本质上是一个内部函数,而不是类 a 的一部分,这也导致了运行时的错误。
因此,在 js 中,正确的类和方法定义方式至关重要。类方法需要通过 this 来指派,以确保其能够被实例对象所调用。
以上就是为什么这段 JS 代码会报错?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2656305.html