JavaScript继承示例

时间:2014-07-10 03:13:41

标签: javascript prototypal-inheritance

例如,我有一个人构造函数如下:

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构造函数和继承?

1 个答案:

答案 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;
}