访问数组中的对象,该对象是另一个对象Javascript的属性

Access object in array which is a property of another object - Javascript

本文关键字:对象 一个对象 属性 Javascript 数组 访问      更新时间:2023-09-26

我已经很久没有学习OOP了,而且我是JS的新手,所以对于更高级的用户来说,事情可能看起来很奇怪-对不起:)

function page(title) {
    this.subPages = [];
    this.title = title;
}
page.prototype.addToSubPages = function(subPage) {
    this.subPages.push(subPage);
}
page.prototype.getSubPages = function() {
    return this.subPages;
}

现在我创建两个对象:

startPage = new page("start");
somePage  = new page("foo");

并尝试在startPage:中将somePage添加到阵列中

startPage.addToSubPages(somePage);

现在这似乎不起作用,尽管如果我没有错的话,它应该是正确的。

console.log(startPage.getSubPages());

这表明某个在数组中,但对象似乎是空的。我做错了什么?另外:如何访问该数组中的某个元素?像这样:startPage.getSubPages()[0].getFoo();

编辑:神圣的Mackerel,蝙蝠侠!这更像我的实际代码:http://jsfiddle.net/pZHKS/2/你没事,我发布的代码确实有效。一旦继承开始发挥作用,它就不再起作用了。为什么呢?它应该和上面的代码完全一样工作,对吧?

function page(title) {
    this.title = title;
}
function subPage() {
    this.contentPages = [];
}
subPage.prototype = new page;

有两个问题。

  1. 您没有在subPage中调用page
  2. 您使用Child.prototype = new Parent;是错误的,请改用Object.create

所以固定的代码是。

function page(title) {
    this.title = title;
}
function subPage(title) {
    page.call(this, title);
    this.contentPages = [];
}
subPage.prototype = Object.create(page.prototype);