如果我有:
function Person(name, age){
this.name = name;
this.whoIs = function(){
alert('I am ' + this.name);
}
}
var john = new Person('John');
john.whoIs();
一切都会奏效,我会得到一个很好的提醒:"我是John"。
有没有办法在构造函数之后向原型添加方法,并且可以访问构造函数参数?
类似的东西:
function Person(name, age){
this.name = name;
this.whoIs = function(){
alert('I am ' + this.name);
}
}
Person.prototype.age = Person.arguments[1];
var john = new Person('John', 20);
john.age; // would give 20
有办法做到这一点吗?即:能够在创建新实例时能够访问参数的原型中添加属性或方法吗?
答案 0 :(得分:3)
在原型中拥有动态属性是没有意义的。将原型视为对象的蓝图。
你可以这样做:
function Person(name, age){
this.name = name;
this.whoIs = function(){
alert('I am ' + this.name);
}
this.age = age;
}
var john = new Person('John', 20);
john.age; // would give 20
此外,还为每个whoIs
对象添加了Person
函数。您可以将其添加到原型中:
function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.whoIs = function () {
return 'I am ' + this.name;
}
var john = new Person('John', 20);
john.whoIs(); // would give "I am John"