gpt4 book ai didi

Javascript 继承调用行为

转载 作者:行者123 更新时间:2023-11-30 15:52:27 25 4
gpt4 key购买 nike

正在经历 Mozilla's Reference并遇到了这种简单的关系。

function Employee() {
this.name = "";
this.dept = "general";
}

function Manager() {
Employee.call(this);
this.reports = [];
}
Manager.prototype = Object.create(Employee.prototype);

显然,这形成了从 Employee 到 Manager 的继承关系。

这里有两个问题,不确定 Employee.call(this); 是什么以及为什么在那里,并且不是将对象分配给 Employee.prototype,而是分配给 Manager.prototype。我的想法是 Manager 是从 Employee 继承的,反之亦然。也许这就是原型(prototype)链的概念,它真的意味着两个对象可以互相获取属性?

需要一些说明。

最佳答案

  1. Employee.call(this)就像调用Employee() ,但不是使用它来创建新对象,而是修改当前的 Manager .在此示例中,它设置 namedeptManager .
  2. 这条声明:

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

    表示任何属性设置为 Employee.prototype.<em>x</em> = val也将在 Manager.prototype 中提供;但是,如果您在 Manager.prototype 中覆盖它们,它们将被覆盖。
    您还应该运行 Manager.prototype.constructor = Manager使该属性正确。

关于Javascript 继承调用行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39108065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com