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が定義されていません」

これは、インスタンスを宣言してから呼び出す方法に関するものだと確信しています。jsファイル内にvar宣言を入れると、クリックが機能します。

    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 に答える