我正在尝试使用java脚本工厂模式创建html按钮。 这是工厂界面:
var _button = function(){};
_button.prototype.createButtonType = function(options){
var buttonType = null;
if(options.edit == true){
buttonType = _edit;
}
else if(options.remove == true){
buttonType = _remove;
}
return new buttonType(options.holder);
}
**The _edit & _remove functions are as follows**
var _edit = function(holder){
console.log("Method executing : components._edit",holder)
var buttonBasicEdit = _basicButton();
buttonBasicEdit.className = "defaultEdit";
buttonBasicEdit.innerHTML = "Edit";
buttonBasicEdit.onclick = function(){
//someaction
};
holder.appendChild(buttonBasicEdit);
}
var _remove = function(holder){
console.log("Method executing : components._remove");
var buttonBasicRemove = _basicButton();
buttonBasicRemove.className = "defaultRemove";
holder.appendChild(buttonBasicRemove);
};
function _basicButton(){
console.log("Method Executing components._basicButton")
var buttonBasic = document.createElement("button");
return buttonBasic;
};
## The basic factory calling function is ##
var _buttons = new _button();
_buttons.createButtonType({
edit:true,
remove:true,
holder:buttonHolder
});
问题是当我在原型函数中调用if....else if
时,它只调用_edit
函数并创建编辑按钮,只是忽略_remove
函数。但是当使用两个连续的if
循环时,它会抛出undefined is not a function
异常。