例如,我有一个人构造函数如下:
function Person(name) {
var username = name;
return {
getName: function() {return username;},
setName: function(name) {username=name;}
}
}
然后我想创建另一个Employee
构造函数,它将继承自Person
构造函数,并且有一个getId
方法,该方法为每个创建的对象返回一个自动递增的id值。 Employee
构造函数。例如,
var employee1 = new Employee('foo');
employee1.getName() // will output foo
employee1.getId() // will output 1
var employee2 = new Employee('qoo');
employee2.getName() // will output qoo
employee2.getId() // will output 2
问题是我对如何在id
构造函数上创建Employee
变量有点困惑,它只被调用一次,然后每个对象将获得一个固定的自动递增值。我应该如何设置Employee
构造函数和继承?
答案 0 :(得分:1)
鉴于你的Person
构造函数,你不想使用原型继承而是寄生的继承。
Employee
构造函数在创建局部变量和定义局部函数方面非常相似,只是通过递增静态计数器而不是参数来初始化id
:
Employee.counter = 0;
function Employee(name) {
var that = Person(name);
var id = Employee.counter++;
that.getId = function() { return id; };
return that;
}