Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类:使用构造函数添加self-as属性_Javascript - Fatal编程技术网

Javascript 类:使用构造函数添加self-as属性

Javascript 类:使用构造函数添加self-as属性,javascript,Javascript,我想得到一个javascript类,它将自己的子类映射到子类 到目前为止,我得到的是: export default class Item { constructor (id, name, children = []) { this.id = id; this.name = name; this.children = children.map((child)=>{ return new Item(child.

我想得到一个javascript类,它将自己的子类映射到
子类

到目前为止,我得到的是:

export default class Item {

    constructor (id, name, children = []) {
        this.id = id;
        this.name = name;
        this.children = children.map((child)=>{
            return new Item(child.id, child.name, child.children)
        });
    }

    test(){
        console.log("Test");
    }

    //...
}
如果我现在称之为:

let children = [
    {id: 1, name: 'foo'},
    {id: 2, name: 'bar'},
    {id: 3, name: 'foobar', children: [
        {id: 4, name: 'foo'},
        {id: 5, name: 'bar'},
    ]},
];

let newItem = new Item (item.id, item.name, item.children)
我想我会得到这样的递归映射:

[
  Item: { id: 1, name: 'foo' },
  Item: { id: 2, name: 'bar' },
  Item: { id: 3, name: 'foo', children: [ Item: { id: 4, name: 'foo'}, Item: { id: 5, name: 'bar'}] },
]
在这种情况下,我应该能够对任何子级调用
test()

newItem.children.forEach((child){ child.test(); });
但这会使

_vm.child.test不是一个函数


你的代码工作得很好。我怀疑这是在你创建对象的方式上

在这里,我只提供了一个
id
,字符串为
name
,并将
子对象发送进来。未经修改的代码将创建您所期望的:

类项目{
构造函数(id、名称、子类=[]){
this.id=id;
this.name=名称;
this.children=children.map((child)=>{
返回新项目(child.id、child.name、child.children)
});
}
测试(){
控制台日志(“测试”);
}
//...
}
让孩子们[{
id:1,
姓名:“富”
},
{
id:2,
名称:“酒吧”
},
{
id:3,
名称:“foobar”,
儿童:[{
id:4,
姓名:“富”
},
{
id:5,
名称:“酒吧”
},
]
},
];
让newItem=newItem(1,‘Item’,子项)

console.log(newItem)
您的值是
子项
,但您传递了
项.children
。这可能是问题所在吗?因为你的代码还可以。您的
forEach
中也缺少箭头<代码>(子项)=>{