gpt4 book ai didi

Javascript 构造函数继承

转载 作者:行者123 更新时间:2023-11-29 16:14:38 24 4
gpt4 key购买 nike

早上好,我所在的时区。

我正在学习 JavaScript 继承并开始阅读 MDN 页面。我知道我们必须使用构造函数中的原型(prototype)属性来构建继承链,例如:

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

function Manager(){
this.projects = [];
}
Manager.prototype = new Employee;

如果我们这样做:

var jane = new Manager();

jane.name -> 它将检索“Dave”,因为它将在 Employee 对象上找到。

我无法理解的是如果你这样做:

 function Employee(name,dept){
this.name = name || "Dave";
this.dept = dept || "General";
}

function Manager(){
this.base = Employee;
this.base("Jack","CustpmDept");
this.projects = [];
}

现在如果我也这样做:

var jane = new Manager();

jane.name -> 它将检索“Jack”,因为它将在 Employee 对象上找到。

在最后一个示例中,我没有使用行 Manager.prototype = new Employee;它仍然有效,Manager 对象将 Employee 对象作为其原型(prototype)对象。这怎么可能 ?你能给我解释一下吗

提前致谢

最好的问候

最佳答案

检查以下代码:

function Employee(name,dept){
this.name = name || "Dave";
this.dept = dept || "General";
console.log(this instanceof Manager);
}

function Manager(){
this.base = Employee;
this.base("Jack","CustpmDept");
this.projects = [];
}

var jane = new Manager();
console.log(jane.name);

在例子中

console.log(this instanceof Manager);

返回 true 因为当你调用

this.base = Employee;

您基本上是将经理的this 发送给员工this.namethis.dept 实际上附加到 Manager

关于Javascript 构造函数继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779711/

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