代碼:JavaScript構造
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)的方式有什麼區別?
那麼你的意思是這個函數Person(name,age){this.name = name //不等於_name = name}?有什麼不同? – hguser 2011-05-14 13:43:16
'var _name'創建一個局部變量。它不能從功能外部訪問。 'this._name'在你用'new Person()'創建的對象上創建一個屬性。看一個例子:http://jsfiddle.net/cWtJN/ – 2011-05-14 14:08:02
所以,放棄屬性_name並不需要,只需使用this._name = name,那麼Person的實例將擁有這個屬性? – hguser 2011-05-14 14:34:41