Javascript 类:使用构造函数添加self-as属性
我想得到一个javascript类,它将自己的子类映射到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.
子类
到目前为止,我得到的是:
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
中也缺少箭头<代码>(子项)=>{