我工作在JS一个相当复杂的对象上,我遇到了问题:JavaScript的嵌套的对象引用父
我有如下(有删节)代码:
var LocationSelector;
LocationSelector = function(container) {
this.selectors = {
container: container,
city_name: container.find('input.city_name'),
city_id: container.find('input.city_id')
};
return this.initialize();
};
LocationSelector.prototype = {
initialize: function() {
return this.city.checkStatus();
},
city: {
status: null,
message: null,
id: null,
checkStatus: function() {
if (LocationSelector.selectors.city_name.val() && LocationSelector.selectors.city_id.val()) {
return LocationSelector.city.setStatus('success');
}
},
setStatus: function(status) {
return alert(status);
}
}
};
两个问题:
1)在子对象函数this
中不再引用回根对象。如果我写出LocationSelector.object.method(args)
,似乎我可以参考父母,但这很重要。有没有办法将快捷方式定义回父对象?
2)在某些情况下,我需要每页有几个实例,所以对于我来说,当实例化一个新对象然后引用原型中的实例选择器时,我可以设置各种selectors
。是指在子对象方法中的父对象(即LocationSelector
)甚至可行吗? JS如何知道保持当前活动对象的存储属性?
基本上,我试图实现一个类,我对JS完全陌生,并不知道如何去做。所以,任何帮助或建议表示赞赏。谢谢!
的原因城成员调用合适的范围是,此处理程序需要做一大堆的东西,所以在我原来使用大小写(每页只有一个处理程序)我发现创建它作为一个具有许多嵌套属性的对象字面值更容易,所以我可以做这样的事情:'LocationSelector.city.setStatus(...)'和'LocationSelector.district.changeName (...)'和'LocationSelector.errorMessages.display(...)'...等等。每个子对象都与DOM块相关,每个块都与其他块交互,而LocationSelector实际上就像是一个将它们绑定在一起的名称空间... – Andrew 2012-04-23 14:13:47
...现在我有一种情况,我需要更多我不得不学习如何使用可以表现为不同实例的处理程序对象。当谈到JS时,我是一个全新的人,所以这真是我所知道的。无论如何,你的答案*非常有用,并显示我需要的东西:这两个基本补丁都显示了我的代码是如何被破坏的,并提供了一个更智能的方法的建议。非常感谢,如果我可以给你5个upvotes我会的。 – Andrew 2012-04-23 14:15:54