3

これが私のオブジェクトの構築です。

function Employee(name, dob) {
       this.Name = name;
       this.DateOfBirth = new Date(dob);
   }

今、私はこのためのインスタンスを作成しました

var emp = new Employee("sample","12/12/12");

出力を印刷すると正常に動作します。

しかし、次のようなオブジェクトを作成すると

var emp = new Employee(name = "sample");

また

var emp = new Employee(dob = "12/12/12");

うまくいきません。どちらの場合も、DateOfBirthフィールドは無効です。

オプションのパラメーターを使用してオブジェクトを定義する必要があります。

4

3 に答える 3

6

JavaScript は、名前付きのオプション パラメータをサポートしていません。

あなたがするときvar emp = new Employee(name = "sample");

nameグローバル変数を宣言し、それに代入て呼び出しsampleに渡します。new

オブジェクトを使用して、JS で同様の構文を実現できます。

var emp = new Employee({name:"sample"}); 

Employee 関数は次のようになります。

function Employee(options) {
       this.Name = options.name;
       if(options.dob !== undefined){
           this.DateOfBirth = new Date(options.dob);
       }
}

実際には、多くの場合、 Employee クラスは必要なく、簡単に実行できます。

var emp = {name:"sample"};

または:

var emp = {dob:new Date("12/12/12");}

したがって、Employee が実際のモデルに成長しない限り (そして 2 つ以上のフィールドを持たない限り)、それを検討したいと思うかもしれません。

于 2013-05-28T10:53:57.377 に答える
-1

良い習慣として、変数を決して除外しないでください。明示的に呼び出すことができますvar emp = new Employee(null, "12/12/12");

このようにしてすべてが初期化され、後で頭を悩ませることはありません。このようなものもありますが、代入する前に値を確認する必要があります。

function Employee() {
       this.Name = name;
       this.DateOfBirth = new Date(dob);
   }

var emp = new Employee(name = null,dob = "12/12/12");
于 2013-05-28T10:57:53.543 に答える