javascript构造函数

javascript构造函数,javascript,object,Javascript,Object,代码: (一) 但我想知道为什么我可以创造一个新的人使用: var p2=new Person(); //no error 没有类似以下的构造函数: function Person(){} 为什么? (二) 这与1)的方式有什么区别?如果不将参数传递给函数,它们将在函数内部未定义。您可以向函数传递任意数量的参数,只需输入名称即可 第二个版本中唯一的区别是定义了两个不使用的局部变量,并且对属性进行了不同的命名。请注意,var\u name与this不同。\u name如果不将参数传递给函数,它

代码:

(一)

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

var p2=new Person(); //no error
没有类似以下的构造函数:

function Person(){}
为什么?

(二)


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

如果不将参数传递给函数,它们将在函数内部
未定义。您可以向函数传递任意数量的参数,只需输入名称即可


第二个版本中唯一的区别是定义了两个不使用的局部变量,并且对属性进行了不同的命名。请注意,
var\u name
this不同。\u name

如果不将参数传递给函数,它们将在函数内部
未定义。您可以向函数传递任意数量的参数,只需输入名称即可

第二个版本中唯一的区别是定义了两个不使用的局部变量,并且对属性进行了不同的命名。请注意,
var\u name
this不同。\u name

1)函数在Javascript中可以接收的参数数量不一定相等。在这种情况下(p2),它们将是未定义的

2) 您正在使用var\u name、\u age;声明2个“私有”(仅本地)变量。。如果您没有在该范围内使用它们,那么就没有必要了。

1)函数在Javascript中可以接收的参数数量并不一定要相等。在这种情况下(p2),它们将是未定义的


2) 您正在使用var\u name、\u age;声明2个“私有”(仅本地)变量。。如果您没有在该范围内使用它们,那么就没有必要了。

那么您是说函数Person(name,age){this.name=name//不等于_name=name}?区别是什么?
var\u name
创建一个局部变量。它将无法从功能外部访问
this.\u name
在使用
new Person()创建的对象上创建属性。请看一个示例:因此,没有必要对属性_name进行decare,只需使用此属性。_name=name,则Person的实例将具有此属性?@hguser:Yes。这是唯一的申报方式。否则(使用
var
)您只需像在普通函数中一样创建一个局部变量。那么您是指函数Person(name,age){this.name=name//not equal with _name=name}?区别是什么?
var\u name
创建一个局部变量。它将无法从功能外部访问
this.\u name
在使用
new Person()创建的对象上创建属性。请看一个示例:因此,没有必要对属性_name进行decare,只需使用此属性。_name=name,则Person的实例将具有此属性?@hguser:Yes。这是唯一的申报方式。否则(使用
var
)只需创建一个与普通函数类似的局部变量。
function Person(){}
function Person(name,age){
  var _name,_age;
  this._name=name;
  this._age=age;
}

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