我对使用Javascript进行编码非常有经验,但还有一件事我无法真正解决这个问题。
我有一个超类,让我们说类别。现在我想从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
的属性,但它不会发生。
有人可以帮我解决这个问题吗?
答案 0 :(得分:3)
JavaScript没有类。 对象的原型是另一个对象。如果您将原型分配更改为此,它应该可以工作:
post.prototype = this;
但是,我不认为这是你想要做的。在这种情况下,继承关系没有意义。 Post
实际上不是Category
的类型。 IMO,我会使用组合而不是继承:
post.category = this;
这样,您可以在帖子中通过类别成员访问类别的成员。