2011-10-19 12 views
1

:それは方法を思わJavaScriptクラスの呼び出し

var foo = new Foo.bar(); 

これでは、インスタンス化時に呼び出されています。これを収容するためにどのようにクラス構造を設定するのですか?このような新しいクラスを呼び出すときにメソッドに直接アクセスしようとすると、エラーが発生します:匿名関数を呼び出します。

ありがとうございます!

+0

インスタンス化の後にメソッドを呼び出すのではなく、提供された関数をコンストラクタとして使用しています。これは新しい 'Foo.bar'オブジェクトを作成し、新しい' Foo'オブジェクトではなく 'bar'を呼び出しています。 – zzzzBov

+0

'Foo'は' bar() 'コンストラクタの名前空間に過ぎません。 – jfriend00

答えて

6
var Foo = {}; 
Foo.bar = function() { 
    this.variable = "something"; 
} 

var foo = new Foo.bar(); 
foo.variable === "something"; // true 

Foo擬似名前空間ですが、本当にそれだけのオブジェクトです。 barは、無名関数です。この場合、var名はvariableで、そのスコープに保存されます。

関連する問題