конструктор JavaScript - PullRequest
       3

конструктор JavaScript

0 голосов
/ 14 мая 2011

Код:

1)

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

var p=new Person('stack',100);
console.dir(p);
console.info(p.name);//'stack'.

Но мне интересно, почему я могу создать нового человека, используйте:

var p2=new Person(); //no error

Нет такого конструктора как:

function Person(){}

почему?

2)

function Person(name,age){
  var _name,_age;
  this._name=name;
  this._age=age;
}

var p=new Person('stack',100);
console.dir(p);

В чем разница между этим и способом 1)?

Ответы [ 2 ]

5 голосов
/ 14 мая 2011

Если вы не передадите параметры в функцию, они будут undefined внутри функции. Вы можете передать функции любое количество параметров, вам просто нужно имя.

Единственное отличие во второй версии состоит в том, что вы определяете две локальные переменные, которые вы не используете, и что вы называете свойства по-разному. Обратите внимание, что var _name не совпадает с this._name.

0 голосов
/ 14 мая 2011

1) не обязательно соблюдать равное количество параметров, которые функция может получить в Javascript.В этом случае (p2) они будут неопределенными.

2) вы объявляете 2 «приватные» (только локальные) переменные с var _name, _age;.. нет необходимости, если вы не используете их внутри этой области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...