javascript构造函数

hgu*_*ser 0 javascript object

码:

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'.
Run Code Online (Sandbox Code Playgroud)

但我想知道为什么我可以创建一个新人使用:

var p2=new Person(); //no error
Run Code Online (Sandbox Code Playgroud)

没有像这样的构造函数:

function Person(){}
Run Code Online (Sandbox Code Playgroud)

为什么?

2)

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

var p=new Person('stack',100);
console.dir(p);
Run Code Online (Sandbox Code Playgroud)

这与1)的方式有什么区别?

Fel*_*ing 5

如果不将参数传递给函数,它们将undefined在函数内部.您可以将任意数量的参数传递给函数,只需要名称即可.

第二个版本的唯一区别是您定义了两个不使用的局部变量,并且您以不同方式命名属性.注意与... var _name不一样this._name.