Type= {
Container: $get('ctl00_Main_rbtnlst_Type'),
Local: this.Container.getElementsByTagName('input'),
Foreign:this.Container.getElementsByTagName('input')
}
当我在firebug控制台中运行此代码时,我得到错误'this.Container'未定义,即使已定义。我怎样才能访问Local和Foreign属性中的Container属性。我甚至试过这个。
Type= {
Container: $get('ctl00_Main_rbtnlst_Type'),
Local: Container.getElementsByTagName('input'),
Foreign:Container.getElementsByTagName('input')
}
答案 0 :(得分:3)
实例化时无法获得this
。你可以这样做:
Type= {
Container: $get('ctl00_Main_rbtnlst_Type'),
Local: function(){return this.Container.getElementsByTagName('input');},
Foreign: function(){return this.Container.getElementsByTagName('input');}
}
稍后使用Type.Local()/Type.Foreign()
如果您需要实例中的Local / Foreign,请使用此reduntant模式:
Type= {
Container: $get('ctl00_Main_rbtnlst_Type'),
Local: $get('ctl00_Main_rbtnlst_Type')
.getElementsByTagName('input');},
Foreign: $get('ctl00_Main_rbtnlst_Type')
.getElementsByTagName('input');}
}
或使用此立即执行的功能:
var Type = (function(){
var container = $get('ctl00_Main_rbtnlst_Type'),
local = container.getElementsByTagName('input'),
foreign = container.getElementsByTagName('input');
return {
Container: container,
Local: local,
Foreign: foreign
}
})();
并且要完整,您还可以使用一些getters
,但这不适用于所有浏览器(尤其不适用于IE< 9)
var Type = {
Container: $get('ctl00_Main_rbtnlst_Type'),
get Local() {return this.Container.getElementsByTagName('input');},
get Foreign() {return this.Container.getElementsByTagName('input');}
}
注意:Local
和Foreign
是一样的,是您的意图吗?
答案 1 :(得分:2)
你可以这样做:
var container = $get('ctl00_Main_rbtnlst_Type');
Type = {
Container: container,
Local: container.getElementsByTagName('input'),
Foreign: container.getElementsByTagName('input')
}
但你可能想要的是:
function Type(containerId){
var container = $get(containerId);
return {
Container: container,
Local: container.getElementsByTagName('input'),
Foreign: container.getElementsByTagName('input')
}
}
var obj = Type('ctl00_Main_rbtnlst_Type');
// can now use obj.Container, obj.Local and obj.Foreign