【发布时间】:2011-06-12 16:10:48
【问题描述】:
MyLibrary.MyModule =
(
function initialise() {
this.id = id;
this.c = document.getElementById(id);
this.ctx = this.c.getContext('2d');
this.properties = {
setup: {
backgroundColour: options.setup.backgroundColour || 'black'
},
scale: {
show: options.scale.show || true,
colour: options.scale.color || 'white'
},
}
console.log(properties.setup.baseFontSize);
}
)(id, options);
我正在使用
调用此代码new MyLibrary.MyModule('c',options);
但“id”和选项似乎没有定义。
有人可以帮忙吗?
【问题讨论】:
-
我从这样的东西开始(没有闭包),然后我想我会尝试将函数重构为闭包。 MyLibrary.MyModule = function initialise(id,options) { this.id = id;.. }
-
通过重构,您是在调用构造函数而不是分配它。如果您希望它具有一些默认值,您应该拥有您正在调用 return 构造函数的函数。喜欢:
MyLibrary.MyModule = ( function( _id,_options) {return function initialise(id,options) { /* your function body */ }; })(id,options);,虽然我不确定这是否是你这样做的原因。
标签: closures javascript-objects javascript