gpt4 book ai didi

javascript - 如何使 Javascript 类成为另一个类的子类

转载 作者:行者123 更新时间:2023-11-30 18:02:32 24 4
gpt4 key购买 nike

我有以下代码并且遇到了 call 和 prototype.constructor 方法,但没有足够的知识使它们正常工作。有人可以填写我缺少的知识吗?这里的管理员是用户。

    function User(user) {
this.id = user.id;
this.email = user.email;
this.firstname = user.firstname;
this.lastname = user.lastname;
this.age = user.age;
}

User.prototype.fullName = function(){
return this.firstname + ' ' + this.lastname
}

function Admin(admin){
this.writer = admin.writer;
this.editor = admin.editor;
this.publisher = admin.publisher;
//User.call(this);
}

Admin.prototype.fullAccess = function(){
return (this.writer && this.editor && this.publisher);
}

//Admin.prototype = new User();
//Admin.prototype.constructor = Admin;

var user1 = new User({
'id': 1,
'email': 'sd_brown@ntlworld.com',
'firstname': 'Stephen',
'lastname': 'Brown',
'age': 44
});

var user2 = new User({
'id': 2,
'email': 'johndoe@ntlworld.com',
'firstname': 'John',
'lastname': 'Doe',
'age': 25
});

var admin1 = new Admin({
'writer': true,
'editor': true,
'publisher': true,
});

var admin2 = new Admin({
'writer': true,
'editor': true,
'publisher': false,
});

最佳答案

您几乎就在那里,只需进行一些简单的更改即可工作:

  1. 取消注释您的注释行
  2. User.call(this); 更改为 User.call(this, admin);。这会将传递给 Admin 构造函数的参数提前传递给“ super ”构造函数。
  3. Admin.prototype = new User(); 更改为 Admin.prototype = new User({});(传递一个空对象,否则 User 构造函数将尝试访问未定义的属性时抛出错误)。或者只使用 Admin.prototype = Object.create(User.prototype);(IE<=8 需要 polyfill)。

http://jsfiddle.net/P6ADX/

关于javascript - 如何使 Javascript 类成为另一个类的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16593258/

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