gpt4 book ai didi

javascript - 如何在javascript中继承基类属性并调用基类构造函数?

转载 作者:行者123 更新时间:2023-11-29 17:12:26 25 4
gpt4 key购买 nike

假设我有一个 Employee 类:

function Employee(name, age, salary) {
this.name = name;
this.age = age;
this.salary = salary;
}

function Manager(name, age, salary, management_school_name) {
...
}

Manager.prototype = new Employee();
Manager.prototype.constructor = Manager;

在上面的代码中,我想利用Employee封装了nameagesalary.

那么我应该如何处理重复的参数呢?

最佳答案

function Employee(name, age, salary) {
this.name = name;
this.age = age;
this.salary = salary;
}

function Manager(name, age, salary, management_school_name) {
Employee.call(this,name,age,salary); //Call base constructor function
...
}
Manager.prototype = new Employee(); //Create prototype chain
Manager.prototype.constructor = Manager;

另一种创建原型(prototype)链的方法是使用Object.create

Manager.prototype = Object.create(Employee.prototype); //Create prototype chain

这是 Object.create 内部实现的方式:

function create(proto) {
function F() {};
F.prototype = proto ;
return new F();
}

那么什么时候应该使用Object.createnew Employee()来创建原型(prototype)链呢?

Object.create 没有任何创建对象的构造逻辑,而我们可以在 Employee 中有构造逻辑,比如 this.default = "default"。在这种情况下,使用 new Employee()Object.create 没有太大区别。但是如果我们需要完全避免构建逻辑,我们可以使用 Object.create

关于javascript - 如何在javascript中继承基类属性并调用基类构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727187/

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