是否有必要在JavaScript中进行原型继承,以便我们可以动态传播我们添加的新属性?

时间:2016-04-15 03:07:05

标签: javascript prototypal-inheritance

我一直在研究JavaScript中的原型继承,我对它的必要性有一个重大问题。我无法理解为什么它非常重要。我一直在运行如下所示的基本代码段:

function Employee() {
  this.name = "geetha";
  this.dept = "general";
}
Employee.prototype.designation = "nothing";

function Manager() {
  Employee.call(this);
  this.title = "mr";
}
Manager.prototype = Object.create(Employee.prototype);

var mark = new Manager;

console.log(mark.name);
console.log(mark.dept);
console.log(mark.title);
console.log(mark.designation);
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>

在上面的代码段中,如果我删除

Manager.prototype = Object.create(Employee.prototype);

我可以看到它只会妨碍我在“Employee”构造函数中添加一个新属性,以便它逐渐渗透到它是原型的对象。否则,如果我满足于已经定义的属性,我真的不需要将“Employee”作为“Manager”的原型。 Employ Manager内部的Employee构造函数调用将完成其属性的获取。所以我错过了这个概念中真正重要的东西吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您不使用

Manager.prototype = Object.create(Employee.prototype);

那么你实际上并没有使用继承。您只是使用Employee构造函数来初始化Manager实例中的变量,就像它们在Employee实例中被初始化一样。

需要注意的是这一行

Employee.prototype.designation = "nothing";

如果您不使用继承,则属性designation将无法用于Manager实例,因为它不在原型链中。