0

私は javascript を学んでいるので、私を殺さないでください。次のように、さらに異なる名前空間を定義しています。

var name_Class = function(){
  this.variable_name_1 = {}

  this.method_name_1 = function() {}
}

その後..

var second_name_Class = function(){
  this.variable_name_1 = {}

  this.method_name_1 = function() {}
}

最初の変数で変数を定義して初期化し、2 番目の変数でそれを呼び出そうとすると、たとえば書き込みのc = new name_Class()場合、たとえば、すべての配列を再定義して、[]以前に与えた値を取得できなくなります。手伝って頂けますか?

4

2 に答える 2

1

自分が何をしているのか理解できません。

これ

var name_Class = function(){
  this.variable_name_1 = {}

  this.method_name_1 = function() {}
}

name_Classと呼ばれるコンストラクター関数を定義します(余談ですが、コンストラクターの最初の文字は慣例により大文字にする必要があります)

これ

var c = new name_Class();

そのコンストラクターを使用してオブジェクトを作成します。新しいオブジェクトが作成され、コンストラクターがそのオブジェクトにバインドされて呼び出され、新しいオブジェクトのvariable_name_1プロパティとmethod_name_1プロパティが設定されます。変数に割り当てるたびnew name_Class()に、コンストラクターがバインドされた完全に新しいオブジェクトが作成されます。関数に作成された他のオブジェクトに加えた変更は、この新しい変数には影響しません。

これらはすべて、同じように使用できる2番目のコンストラクターとはまったく関係がなく、最初のコンストラクターの影響をまったく受けません。

これらはどちらも技術的には名前空間ではなく、クラスまたはタイプです。名前空間は通常、他の変数がプロパティとして定義されている最上位の変数を指します。デフォルトでは、変数はグローバル名前空間で定義されます。これはブラウザの場合はウィンドウです。

namespace1たとえば、名前空間にname_Class型の新しいオブジェクトを作成するには、次のようにします。

var namespace1  = {};
namespace1.c = new name_Class();
于 2013-03-14T19:39:44.607 に答える
-2

インスタンスに値を設定する場合は、引数を渡すことができます。例えば

var Swatch = function(){
  this.color = arguments[0] || 'green';
  this.callback = arguments[1] || function() {
     alert(this.color);
  }
  this.callback();
}

//defaults to green if no args are passed
var green = new Swatch();

//or pass in your own values
var red = new Swatch('red',function(){
  alert('New swatch created with color '+this.color);
});
于 2013-03-14T19:46:09.640 に答える