先是一些js物件導向的基礎,後面的模式都會涉及到這些知識點。
var fn = function
(f) //構造器,就是例項物件時執行。。
this.getf();
};給建構函式(類)新增方法:
//新增私有方法,屬性
fn.count = 1;
//新增私有方法,屬性
fn.prototype.counta = 2;
建構函式在例項化的時候,會給物件新增乙個prototype原型物件,指向建構函式的屬性,方法。並且會建立乙個constructor屬性,指向擁有整個原型物件的建構函式或物件。
從乙個建構函式裡返回乙個建構函式生成的物件。。
var book = (function
(); function
_book
(a,b)
this.c();
};_book.prototype.d = 5;
return _book;
})();
var fn = new book(1,2);
用instanceof判斷例項化物件時,作用域是否當前建構函式。
var book = function
(a,b)else
}//把var book = new book();寫成var book = book();
var b = book(1,2);
console.log(this)會執行兩次,第一次輸出的是window。
//宣告父類
var cat = function
(); //父類的方法
cat.prototype.getfoot = function
(); //宣告子類
var bigcat = function
(); //繼承父類,把父類的例項賦值給子類的原型
bigcat.prototype = new cat();
var f = new bigcat();
f.getfoot();
類式繼承的缺點,當乙個子類例項物件修改從父類繼承來的公有屬性時,其他子類就會被影響
var fn = function
(); var fs = function
(){};
fs.prototype = new fn();
var a = new fs();
var b = new fs();
console.log(a.a);//[1,2,3]
a.a.push(4);
console.log(b.a);//[1,2,3,4]
通過call方法,讓建構函式a在b裡執行一遍,不過這個辦法只能繼承建構函式內的方法和屬性,不能繼承原型prototype的屬性!
var a = function
(id);
var b = function
(id);
同時用類式繼承去繼承父類的原型,建構函式式繼承去繼承父類的構造方法
var a = function
();a.prototype.name = function
();var b = function
();b.prototype = new a();
js的36個設計模式 建立型模式
function fn id,txt if id b return o var fa new fn a test fa.show 通過引數,返回需要的例項物件 var factory function type,con else factory.prototype b function con va...
js的36個設計模式 技巧型模式
通過return this,讓函式物件可以鏈式呼叫。function fn this.b function fn.a b dom div 對後新增到dom裡的元素的繫結事件,可以委託給父元素dom物件處理 var dom document.getelementbyid dom dom.onclick...
1 設計模式之前奏
一 設計模式的分類 總體來說設計模式分為三大類 建立型模式 共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式 共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式 共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 ...