gpt4 book ai didi

JavaScript:从父类(super class)实例内部创建子类

转载 作者:行者123 更新时间:2023-11-30 13:26:48 25 4
gpt4 key购买 nike

我在 Javascript 编码方面经验丰富,但仍有一件事我无法真正理解。

我有一个父类(super class),比如说 Category。现在我想从 Category 实例内部创建一个子类的一些实例,比方说 Post。我希望 Post 拥有自己的属性,但它还需要能够访问其父级的属性。所以这是概念:

/* Superclass */
function Category(catID) {
this.catID = catID;
this.posts = [];

this.addPost = function(id, content) {
var post = new Post(id, content);

post.prototype = Category;

this.posts.push(post);
}

this.getPosts = function() {
for(post in this.posts){
this.posts[post].getContent();
}
}
}

/* Subclass */
function Post(postID, content) {
this.postID = postID;
this.content = content;

this.getContent = function() {
console.log('Post: '+ this.postID);
console.log('Category: ' + this.catID);
console.log('Content: ' + this.content);
}
}

var cat1 = new Category(1);
var cat2 = new Category(2);

cat1.addPost(101, 'First post in first category');
cat1.addPost(102, 'Second post in first category');
cat2.addPost(201, 'First post in second category');
cat2.addPost(202, 'Second post in second category');

cat1.getPosts();
cat2.getPosts();

我卡在 post.prototype = Category 行了。我希望现在 Post 继承 Category 的属性,但它并没有发生。

有人可以帮我解决这个问题吗?

最佳答案

JavaScript 没有类。 对象 的原型(prototype)是另一个对象。如果您将原型(prototype)分配更改为此,它应该可以工作:

post.prototype = this;

不过,我认为这不是您想要做的。在这种情况下,继承关系没有意义。 Post 并不是真正的 Category 类型。 IMO,我会使用组合而不是继承:

post.category = this;

这样,从您的帖子中,您应该能够通过类别成员访问该类别的成员。

关于JavaScript:从父类(super class)实例内部创建子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216875/

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