为了账号安全,请及时绑定邮箱和手机立即绑定

我的模块化 JS 代码有问题 TypeError 不是函数

我的模块化 JS 代码有问题 TypeError 不是函数

Cats萌萌 2023-05-11 13:52:16
我试图模块化 JS 代码,但在一个点上停留了很长时间,我知道解决方案很容易,但就是想不通。这是小提琴链接: Fiddle。也在这里添加代码。window.a = (function () {  function abc() {    alert("Hi");  }  return {    abc: abc  }});window.b = (function (aWindow) {  function i() {    aWindow.abc();  }  return {    i: i  }})(window.a);<a href="#" class="abc" onClick="window.b.i()">Click Me</a>错误"<a class='gotoLine' href='#60:10'>60:10</a> Uncaught TypeError: aWindow.abc is not a function"
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您需要调用 window.a 从其原型中获取一个对象。



window.b = (function(aWindow) {


  function i() {

    aWindow.abc();

  }


  return {

    i: i

  }


})(window.a()); //Call Window.a


查看完整回答
反对 回复 2023-05-11
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

你()打电话时错过了aWindow。这个片段效果很好。


window.a = (function () {

  function abc() {

    alert("Hi");

  }

  return {

    abc: abc

  }

});



window.b = (function (aWindow) {

  function i() {

    aWindow().abc();

  }

  return {

    i: i

  }

})(window.a);

<a href="#" class="abc" onClick="window.b.i()">Click Me</a>


查看完整回答
反对 回复 2023-05-11
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

您错过了()定义window.a,因此未执行。


window.a = (function () {

  function abc() {

    alert("Hi");

  }

  return {

    abc: abc

  }

})();


window.b = (function (aWindow) {

  function i() {

    console.log(aWindow);

    window.a.abc();

  }

  return {

    i: i

  }

})(window.a);

<a href="#" class="abc" onClick="window.b.i()">Click Me</a>


查看完整回答
反对 回复 2023-05-11
  • 3 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号