0

これの違いは何ですか...

function Person(name, age, sex) {
  this.name = name;
  this.age = age;
  this.sex = sex;
}

この...

function Person(name) {
  this.name = name;
  this.age = age;
  this.sex = sex;
}

この...

function Person() {
  this.name = name;
  this.age = age;
  this.sex = sex;
}

ありがとう!


デビッド、私はこのように見える私が構築しているゲームのコードを持っています...

function Player(node){
    this.node = node;
    this.grace = false;
    this.replay = 3; 
    this.shield = 3;
    this.respawnTime = -1;
  ...
return true;
}

参照エラーは返されません。それは私が構築しているjavascriptゲームのプレイヤーのためのオブジェクトです...

4

3 に答える 3

2

ブレットが言ったように、2番目と3番目のコンストラクター関数は、新しいPersonインスタンスのプロパティにグローバル変数を割り当てます。ただし、コンストラクターに渡される可能性のある任意の引数を引き続き使用できます。

function Person()//no args
{
    //depending on which value is available:
    //prop = n-th argument OR global variable OR undefined
    this.name = arguments[0] || window.name || undefined;
    this.age = arguments[1] || window.age || undefined;
    this.sex = arguments[2] || window.sex || undefined;
}
var parrot = new Person('polly',1,'M');
console.log(parrot.name);//polly
var noSex = new Person('Joe',99);//if no global sex is set:
console.log(noSex.sex);//undefined
var sex = 'F';
var jane = new Person('Jane',25);
console.log(jane.sex);//F
于 2012-09-18T14:23:19.227 に答える
2

1つ目は、パラメーターを介して設定されたローカル変数に依存してインスタンス変数/プロパティを設定し、3つ目はグローバルに依存してプロパティを設定し、2つ目は混合です。

于 2012-09-18T14:04:37.983 に答える
0

1つ目は有効です。コンストラクターで送信されたパラメーターを使用して、ローカル変数を初期化します。残りは本当に意味がありません。

2つ目では、パラメータをその時点でアクセスできる他の変数と混合し、パラメータを使用して名前のみを初期化します。

3つ目はアクセス可能な変数に基づいていますが、パラメーターとして指定されているものはありません。2つ目と3つ目のオプションを使用して何か便利なものを見たことがありません。

于 2012-09-18T14:04:35.727 に答える