我有一个这样定义的 JavaScript 函数对象:
var minimal = (function() {
var handler = undefined;
var test = function() {
console.log(typeof handler);
if (typeof handler === 'function') {
handler();
}
};
var API = {
handler: handler,
test: test
};
return API;
}());
我希望能够随意将函数注入到对象中。
当我在该属性中设置一个函数时,该函数没有被分配给对象属性,它仍然显示为undefined
:
minimal.handler = function() {
console.log('handled');
};
minimal.test();
我只是把这一切都错了吗?我应该使用更好的模式吗?
解决方案
阅读评论和回复后,我意识到问题在于我正在覆盖API
对象中的值:没有设置对象的处理程序变量。这是一个最小的工作示例:
var minimal = (function() {
var handler = undefined;
var test = function() {
console.log(typeof handler);
if (typeof handler === 'function') {
handler();
}
};
var setHandler = function(func) {
handler = func;
};
var API = {
setHandler: setHandler,
test: test
};
return API;
}());
minimal.setHandler(function() {
console.log('handled');
});
minimal.test();