js常見的設計模式
1.單例模式
var singleParten = (function(){
var singgle;
var init = function(){
console.log(66666)
// return {
// }
}
return {
getSingle:function(){
if(!singgle){
singgle = init();
}
return singgle;
}
}
})()
var singgle1 = singleParten.getSingle()
console.log(singgle1)
var singgle2 = singleParten.getSingle()
console.log(singgle2)
console.log(singgle1 === singgle2)
// 實現單體模式彈窗
var createWindow = (function(){
var div;
return function(){
if(!div) {
div = document.createElement("div");
div.innerHTML = "我是彈窗內容";
div.style.display = 'none';
document.body.appendChild(div);
}
return div;
}
})();
document.getElementById("Id").onclick = function(){
// 點選後先建立一個div元素
var win = createWindow();
win.style.display = "block";
}
2.建構函式模式
function constructorParten(name, age){
this.name = name;
this.age = age;
this.say = function(){
return this.name
}
}
var perple = new constructorParten("張三",20)
console.log(perple.say())
3.工廠模式
function factoryParten(opts){
var obj = new Object();
obj.name = opts.name;
obj.adress = opts.adress;
obj.job = function(){
return obj.name
}
return obj;
}
var factory1 = new factoryParten({name:'鋼鐵廠',adress:'北京市'})
console.log(factory1.job())
4.模組模式(模組模式使用了一個返回物件的匿名函式。在這個匿名函式內部,先定義了私有變數和函式,供內部函式使用,然後將一個物件字面量作為函式的值返回,返回的物件字面量中只包含可以公開的屬性和方法。這樣的話,可以提供外部使用該方法;由於該返回物件中的公有方法是在匿名函式內部定義的,因此它可以訪問內部的私有變數和函式。)
var modelParten = (function(){
var name = "lalala";
var modelsOne = function(){
return this.name;
}
var modelsTwo = function(){
console.log("this is a modelParten demo")
}
return {
modelsOne:modelsOne,
modelsTwo:modelsTwo
}
})()
console.log(modelParten.modelsOne())
console.log(modelParten.modelsTwo())
//圖片預載入
var myImage = (function(){
var imgNode = document.createElement("img");
document.body.appendChild(imgNode);
return function(src){
imgNode.src = src;
}
})();
5.代理模式
var ProxyImage = (function(){
var img = new Image();
img.onload = function(){
myImage(this.src);
};
return function(src) {
myImage("");
img.src = src;
}
})();
// 呼叫方式
ProxyImage("");
6.組合繼承
function Parents(){
this.name = name;
this.age = age;
}
function Child(){
Parents.call(this)
this.name = name;
}
Child.prototype = new Parents();
Child.prototype.constructor = Child;
var child1 = new Child()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4301/viewspace-2799777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 你值得關注的幾種常見的js設計模式JS設計模式
- JavaScript 常見設計模式JavaScript設計模式
- 常見的Golang設計模式實現?Golang設計模式
- JavaScript—常見設計模式整理(27)JavaScript設計模式
- 前端常見設計模式彙總前端設計模式
- Golang 常見設計模式之單例模式Golang設計模式單例
- Golang 常見設計模式之選項模式Golang設計模式
- Golang 常見設計模式之裝飾模式Golang設計模式
- Java常見知識點彙總(⑩)——常見設計模式Java設計模式
- 圖解九種常見的設計模式圖解設計模式
- Python設計模式有哪些?常見分類!Python設計模式
- 常見 JavaScript 設計模式 — 原來這麼簡單JavaScript設計模式
- js 常用的設計模式JS設計模式
- js設計模式JS設計模式
- js設計模式–命令模式JS設計模式
- js設計模式--命令模式JS設計模式
- js設計模式--代理模式JS設計模式
- js設計模式--策略模式JS設計模式
- JS設計模式(迭代器模式)JS設計模式
- js設計模式–組合模式JS設計模式
- js設計模式--模板方法模式JS設計模式
- js設計模式--組合模式JS設計模式
- js設計模式--迭代器模式JS設計模式
- JS設計模式六:策略模式JS設計模式
- JS設計模式四:代理模式JS設計模式
- js設計模式--單例模式JS設計模式單例
- JS常見的字串操作JS字串
- 設計模式常見面試知識點總結(Java版)設計模式面試Java
- 常見的資料設計規範
- RESTful設計中的常見疑問REST
- js設計模式之單例模式JS設計模式單例
- JS設計模式(觀察者模式)JS設計模式
- JS設計模式三:模組模式JS設計模式
- jS設計模式二:單例模式JS設計模式單例
- JS設計模式一:工廠模式JS設計模式
- JS設計模式(一)--- 工廠模式JS設計模式
- JS設計模式(二)--- 單例模式JS設計模式單例
- Golang常見的併發模式Golang模式