【发布时间】:2020-12-17 17:21:30
【问题描述】:
如果构造函数中的方法对所有实例都相同,我完全理解 JavaScript 中原型继承的概念。但是,如果我想通过构造函数创建对象,但又希望方法为每个实例产生不同的结果呢?
function Player (health, power, stamina) {
this.health = health;
this.power = power;
this.stamina = stamina;
this.recovery = function () {
return this.health += 20;
}
}
var hulk = new Person ( 100,80,60 );
var superman = new Person ( 100,70,50);
我的问题是,当我调用恢复方法时,我希望 hulks 恢复添加 20,但我希望超人添加 40。如果我将方法添加到原型而不是直接添加到对象中,我仍然希望该方法仅绿巨人和超人不同。我是否为此创建对象文字并为每个对象指定不同的方法?如果我有数百个字符,这似乎很长!或者我是否应该向 Person 原型添加另一个多个方法,即使它只被一个实例使用?在仍然使用构造函数的情况下,让超人恢复得比绿巨人更好的最好方法是什么?谢谢大家。
【问题讨论】:
标签: javascript object inheritance constructor prototype