-1

コード スニペット 1:

<script>
function Person(lastName, firstName){ 
  this.lastName = lastName; 
  this.firstName = firstName; 
}
var DnnyGdmn = new Person("Goodman","Danny"); 
var DvdFlngn = new Person("Flanagan","David"); 
function Book(title, pages, price){ 
  this.title = title; 
  this.pages = pages; 
  this.price = price; 
  this.authors = new Array(arguments.length-3);
  console.log(arguments);
  for(i = 0; i < arguments.length - 3; i++){ 
    this.authors[i] = arguments[i + 3]; 
  } 
}
var JavaNut = new Book("Java Foundation Classes in a Nutshell", 731, 29.95, DvdFlngn); 
var JSTDR = new Book("Javascript: The Definitive Guide (3rd  Edition)", 776, 39.95, DvdFlngn); 
</script>

Firefox firebug->console->all では、次のように表示されます。

["Java Foundation Classes in a Nutshell", 731, 29.95, Person { lastName="Flanagan", firstName="David"}]
["Javascript: The Definitive Guide (3rd Edition)", 776, 39.95, Person { lastName="Flanagan", firstName="David"}] 

コード スニペット 2:

<script>
function Person(lastName, firstName){ 
  this.lastName = lastName; 
  this.firstName = firstName; 
}
var DnnyGdmn = new Person("Goodman","Danny"); 
var DvdFlngn = new Person("Flanagan","David"); 
</script>

Firefox firebug->console->all では何も表示されません。

質問:

どちらのコード スニペットも同じことを行い、特定のオブジェクトのインスタンスを作成しますが、なぜコード 1 はコンソールに何かを書き込み、コード 2 はそうしないのでしょうか?

4

1 に答える 1

3

には、次のcodes 1ものがあります。

console.log(arguments);

これはここにあります:

  ...
  this.pages = pages;
  this.price = price;

  this.authors = new Array(arguments.length-3); console.log(arguments);

  for(i=0;i<arguments.length-3;i++){
    this.authors[i] = arguments[i+3];
  }
  ...

このコードは、引数の値を に書き込みますconsole。コードは に存在しcodes 2ないため、コンソールには何も出力されません。

于 2013-06-17T02:15:20.160 に答える