gpt4 book ai didi

javascript - 为什么构造函数在继承时初始化为自身

转载 作者:行者123 更新时间:2023-11-30 14:49:41 25 4
gpt4 key购买 nike

我发现以下代码用于在 ES5 的 Javascript 中创建继承。在本例中,Employee 继承自 Person

function Employee(name, title) {
Person.call(this, name); // super(name)
this.title = title;
}
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.describe = function() {
return Person.prototype.describe.call(this) // super.describe()
+ ' (' + this.title + ')';
};

我不明白这一行:

Employee.prototype.constructor = Employee;

所以 Employee 已经在第一行定义了。为什么我们需要为它创建构造函数并将其初始化为自身?这是如何工作的?

最佳答案

您不是创建构造函数,只是将属性 constructor 指向现有构造函数。如果您不这样做,则会产生误导,因为使用 new Employee 创建的实例继承的 constructor 属性将是 Person,而不是 员工:

function Person() {
}
function Employee() {
Person.call(this);
}
Employee.prototype = Object.create(Person.prototype);

var per = new Person();
var emp = new Employee();
console.log(per.constructor === Person); // true
console.log(emp.constructor === Employee); // false?
console.log(emp.constructor === Person); // true?!?!!

关于javascript - 为什么构造函数在继承时初始化为自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48354440/

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