使用构造函数参数将新属性添加到Prototype

时间:2014-12-21 22:26:25

标签: javascript prototype

如果我有:

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

有办法做到这一点吗?即:能够在创建新实例时能够访问参数的原型中添加属性或方法吗?

1 个答案:

答案 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"