1

我想在 js 文件中定义一个 Javascript 对象,并使用户可以通过调用头部的 src 然后使用“new”在其 HTML 上创建它的新实例。[也许这不是最好的方法,但请耐心等待]——非常基本的东西,对吧?

JS 文件 myFile.js 中的代码:

function myObject(){
   this.myMethod = thisMethod;

   function thisMethod(){
     return 2;
   }
}

HTML 中的代码:

<head>
  <script type="text/javascript" src="http://myserver/myFile.js">
     var customObject = new myObject();     
  </script>
</head>
<body>
   <input type="button" value="Click Me" onclick="alert(customObject.myMethod());">
</body>

但是,当您单击按钮时,会出现错误:

“未捕获的 ReferenceError:未定义 customObject”

我确信这是关于我如何声明实例然后调用它。如果我将 var 声明放在 js 文件中,则单击有效:

    function myObject(){
       this.myMethod = thisMethod;

       function thisMethod(){
         return 2;
       }
    }

var customObject = new myObject();

但这违背了让用户创建对象并随意使用它的目的。

当然我的结构有问题,但我所有的研究都没有给我一个线索。我认为引入 js 文件与将代码放在 HEAD 中的脚本标记中并在那里实例化对象相同——因为如果我这样做,没有 .js 调用,它就可以工作。

我有很多理论,其中一些是关于事件和加载顺序的,但我不想让这个问题变得混乱。

那么问题来了:如何在 js 文件中定义一个对象,然后让用户在 HTML 中实例化并调用其方法?(特别是对于像 onclick 这样的事件)

4

1 回答 1

2

问题是您不能使用相同的标签来包含外部资源并定义您的 javascript 代码。您必须使用 2 个单独的标签,否则您在标签内放置的任何代码都将被省略。这工作正常:

<script type="text/javascript" src="http://myserver/myFile.js"></script>    
<script type="text/javascript">
    var customObject = new myObject();     
</script>

希望能帮助到你,

于 2013-01-29T08:26:02.450 回答