我有一个带有此对象设置量的其他对象的JS文件。
if (!me) var me = {};
me.page = {
initialize:function( options ) {
var settings = $.extend({
error_module: $('#error-module'),
mainForm: $('form')
}, options);
},
pagemaker:function(){
var temp = settings.error_module
}
}
me.bla = {
// the scope of bla
}
如果我打电话给me.page.pagemaker()它找不到设置变量。我不希望设置全局我希望它在对象页面的范围内。 我怎样才能使这个工作如此var temp = settings.error_module未定义。
答案 0 :(得分:2)
您可以使用IIFE(立即调用函数表达式)。看看这是否有帮助。我稍微修改了你认为最佳实践的代码:
var me = me || (function(){
var settings = {
errorModule: '#error-module',
mainForm: 'form'
};
return {
page: {
init: function(options) {
$.extend(settings, options);
},
pageMaker: function() {
var temp = $(settings.errorModule);
}
},
bla: function() {
}
};
}());
编辑错过了外部对象。
答案 1 :(得分:1)
将其设为me
:
initialize:function( options ) {
me.settings = ...;
}
后来:
pagemaker:function(){
var temp = me.settings.error_module
}
此处也存在范围问题:
if (!me) var me = {};
你可以改用它:
var me = me || {};
答案 2 :(得分:0)
如果要将其保留在对象页面的范围内,可以在settings
对象中定义另一个名为page
的属性,因为它只是由键和值表示,如下所示:
me.page = {
// Initial/default values
settings: {
error_module: null,
mainForm: null,
},
initialize: function(options) {
this.settings = $.extend({...}, options);
},
pagemaker: function() {
var temp = this.settings.error_module;
}
}