工廠模式也是對象創建模式之一
先看簡單工廠模式
代碼如下:
Person(name
var obj = {}
obj
obj
return obj
}
var p
var p
與構造函數方式寫一個類的區別在於沒有使用this
下面以個水果工廠示例
代碼如下:
function Banana() {
this
}
function Apple() {
this
}
function Orange() {
this
}
// 靜態工廠類
function Fruit() {}
Fruit
if (!window[type]) {
return
}
var fruit = new window[type]
return fruit
}
// 制造不同的水果
var banana = Fruit
var apple = Fruit
var orange = Fruit
有三個水果類Banana
工廠模式在JavaScript原生對象Object也有所體現
代碼如下:
var obj = Object()
num = Object(
str = Object(
boo = Object(false);
Object就是一個工廠
jQuery
所謂的工廠模式
利用這種模式
代碼如下:
function RemouldNodeObj(DomNode){
//先判斷一下傳遞進來的參數是不是一個Dom節點
if(typeof DomNode == "object" && DomNode
DomNode
alert("Hello!!");
}
}else{
alert("你傳遞進來的參數不正確!");
}
}
//這樣調用:
window
var oDiv = RemouldNodeObj(document
//通過這一步
oDiv
}
有了上面的基礎後
代碼如下:
<html>
<head>
<title>JavaScript之工廠模式</title>
<script type="text/javascript">
function RemouldNodeObj(DOMnode){
//先判斷一下傳遞進來的參數是不是一個Dom節點
if(typeof DOMnode == "object" && DOMnode
DOMnode
//下面是一大串的字符串加法
var oForm = "";
oForm += "<form action="" + opt
oForm += "method="" + (opt
oForm += (opt
oForm += "style="width:
oForm += "</form>";
//這裡的this不要想得太復雜
this
}
}else{
alert("參數不正確!");
}
return DOMnode;
}
//這樣調用
window
var oDiv = RemouldNodeObj(document
oDiv
});
}
</script>
</head>
<body>
<div id="custom">###</div>
</body>
</html>
看到了沒?這樣的調用方式是不是很像jQuery?如果能夠解決跨浏覽器問題的話
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19973.html