猿问

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

我试图模块化 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"


Cats萌萌
浏览 178回答 3
3回答

呼如林

您需要调用 window.a 从其原型中获取一个对象。window.b = (function(aWindow) {&nbsp; function i() {&nbsp; &nbsp; aWindow.abc();&nbsp; }&nbsp; return {&nbsp; &nbsp; i: i&nbsp; }})(window.a()); //Call Window.a

qq_笑_17

你()打电话时错过了aWindow。这个片段效果很好。window.a = (function () {&nbsp; function abc() {&nbsp; &nbsp; alert("Hi");&nbsp; }&nbsp; return {&nbsp; &nbsp; abc: abc&nbsp; }});window.b = (function (aWindow) {&nbsp; function i() {&nbsp; &nbsp; aWindow().abc();&nbsp; }&nbsp; return {&nbsp; &nbsp; i: i&nbsp; }})(window.a);<a href="#" class="abc" onClick="window.b.i()">Click Me</a>

汪汪一只猫

您错过了()定义window.a,因此未执行。window.a = (function () {&nbsp; function abc() {&nbsp; &nbsp; alert("Hi");&nbsp; }&nbsp; return {&nbsp; &nbsp; abc: abc&nbsp; }})();window.b = (function (aWindow) {&nbsp; function i() {&nbsp; &nbsp; console.log(aWindow);&nbsp; &nbsp; window.a.abc();&nbsp; }&nbsp; return {&nbsp; &nbsp; i: i&nbsp; }})(window.a);<a href="#" class="abc" onClick="window.b.i()">Click Me</a>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答