2012-10-10 20 views
6

私は今file1.js別のjsファイルでjavascriptクラスをインスタンス化する方法は?

function Customer(){ 
    this.name="Jhon"; 
    this.getName=function(){ 
     return this.name; 
    }; 
}; 

でクラスを定義する場合、私は、私は例外取得していますfile2.js

var customer=new Customer(); 
var name=customer.getName(); 

でCustomerオブジェクトを作成する場合としますCustomer is undefined, not a constructor.

しかし、私はfile2.jsで顧客オブジェクトを作成し、それをfile1.jsに渡してから作業します。

file1.js 

    function Customer(){ 
     this.name="Jhon"; 
     this.getName=function(){ 
      return this.name; 
     } 
    } 
    function customer(){ 
     return new Customer(); 
    } 

file2.js 

    var customer=customer(); 
    var name=customer.getName(); 

しかし、新しいCustomer()を使用してfile1.jsに顧客オブジェクトを作成したいとします。どうすればそれを達成できますか?

+3

ああ、JSをOOP言語として使用しようとしていることの喜び。 – NullUserException

答えて

0

あなたがHTML内のJavaScriptを使用している場合、あなたはあなたのhtml内のfile1.jsfile2.jsを含める必要があります。

<script src="path_to/file1.js"></script> 
<script src="path_to/file2.js"></script> 

注、file1file2前に最初に来る必要があります。それを動作させるために

+0

私はこれを試しましたが、うまくいきませんでした。 – Tarak

1

可能な提案:

いくつかの変更(U文this.getName=function(){...}にセミコロンを含めるのを忘れて、それはthis.getName=function(){...};する必要があります)

function Customer(){ 
this.name="Jhon"; 
this.getName=function(){ 
return this.name; 
}; 
} 

(これが問題の一つかもしれません。)

正しい順序でJSファイルUリンクを確認してください

<script src="file1.js" type="text/javascript"></script> 
<script src="file2.js" type="text/javascript"></script> 
+0

私は誤ってここにコードを入力したので、 ';'を残しました。 – Tarak

6

それはあなたが実行しているものの環境に依存したWebブラウザでは、あなたが単にfile1.jsfile2.js前にロードされていることを確認する必要があります。

のNode.jsで
<script src="file1.js"></script> 
<script src="file2.js"></script> 

、推奨される方法moduleあなたはrequire機能でそれを読み込むことができますがfile1を作ることです。

require('path/to/file1.js'); 

それはHTMLたちに、ノードのモジュールのスタイルを使用することも可能ですrequire.jsライブラリを使用してください。

2

あなたがFILE2でコードを実行する前に、DOMがロードされていることを確認してください...あなたはjQueryのを使用している場合:

$(function(){ 
    var customer=customer(); 
    var name=customer.getName(); 
}); 

次に、ファイルの中にあるコードウォンを注文するかは重要ではありませんすべてのファイルがロードされるまで実行しないでください。

2

次のような他のファイルからのアクセスにあなたの方法をエクスポートすることができます。

file1.js

var name = "Jhon"; 
exports.getName = function() { 
    return name; 
} 

FILE2。js

var instance = require('./file1.js'); 
var name = instance.getName(); 
関連する問題