我正在尝试创建一些对象来存储有关如何将传入对象(从json)映射到特定表示形式的信息,并且我使用的代码类似于以下内容:
LocationMap = {
fields: {
"name": ValueMap(),
//"parentLocation": ModelMap(LocationMap),
}
}
PersonMap = {
fields: {
"name": ValueMap(),
"location": ModelMap(LocationMap),
}
}
可以将MapValue和MapModel函数视为返回函数,它们对传入的值起作用以将其映射到新值。
我遇到的麻烦是注释掉的行,在这里我需要Location对象来递归引用自己,这当然是不可能的。如果这些是另一种语言的类,我认为可能会有递归引用。如何使用JavaScript完成同一件事?
我在jsfiddle上做了一个小例子。
答案 0 :(得分:0)
如果这些是另一种语言的类,我认为可能会有递归引用
这些是对象,而不是类。您遇到的问题是您不习惯匿名类或对象文字。解决方案很简单,将它们设置为类:
$rules = [
'information.1.color' => 'required'
];
如果您在不支持ES6语法的环境中运行,则可以使用老式的语法:
class LocationMap {
constructor () {
this.fields = {
name: valueMap(),
location: modelMap(this)
};
}
}
class PersonMap = {
constructor () {
this.fields = {
name: valueMap(),
location: modelMap(locationMap)
};
}
}
var locationMap = new LocationMap();
var personMap = new PersonMap();
您还可以手动构造对象:
function LocationMap () {
this.fields = {
name: valueMap(),
location: modelMap(this)
};
}
function PersonMap () {
this.fields = {
name: valueMap(),
location: modelMap(locationMap)
};
}
var locationMap = new LocationMap();
var personMap = new PersonMap();