注:你是不是從People
繼承,但你重用People
的構造函數。
建議1:
確保你沒有創建全局變量。
var People = function (name) { // var at the beginning is important
...
...
var Employee = function (name) { // var at the beginning is important
...
...
var Jonh = new Employee("Jonh Smith");
建議2:
的構造函數應該有一個方法來初始化其他變量也是如此。
var People = function (name, age) {
this.name = name || null;
this.age = age || null;
};
var Employee = function (name, age, idCode, salary) {
People.call(this, name, age);
this.IdentificationCode = idCode || null;
this.salary = salary || null;
}
由於People
在其原型中沒有任何方法,所以應該沒問題。
但是,如果你有People
的原型方法,你希望他們能提供給您的派生對象還有,你能做到這一點
var People = function (name, age) {
this.name = name || null;
this.age = age || null;
};
People.prototype.getData = function() {
return [this.name, this.age];
};
現在定義Employee
這樣
var Employee = function (name, age, idCode, salary) {
People.call(this, name, age);
this.IdentificationCode = idCode;
this.salary = salary;
}
// Make the Employee's prototype an object of parent class's prototype
Employee.prototype = Object.create(People.prototype);
然後做,
var Jonh = new Employee("Jonh Smith", 25, 35632, 3500);
console.log(Jonh.getData());
現在210
,它會調用People
的getData
並將打印
[ 'Jonh Smith', 25 ]
注:這種類型的繼承通常被稱爲原型繼承。
這個問題似乎是脫離主題,因爲它是關於工作代碼,它應該被遷移到http://codereview.stackexchange.com/ – Pavlo
調用部分運行實例特定部分的繼承。您可以通過原型繼承行爲更多信息請閱讀以下答案.http://stackoverflow.com/a/16063711/1641941 – HMR