摘要:設計模式閱讀更多文章查看本專欄第二章類閉包實現類閉包可以理解為類生成器閉包代碼最多只出版本書構造器使用使用方法與普通的是一致的。可以使用安全模式避免忘記使用的情況。
JavaScript設計模式閱讀
更多文章查看本專欄第二章:類 1、閉包實現類
閉包可以理解為"類生成器"
閉包代碼:
var Book = (function(){ var bookNum = 0; function checkBook(name){ } return function(newId,newName,newPrice){ var name,price; this.id = newId; bookNum++; if(bookNum > 100){ throw new Error("最多只出版100本書"); } function checkID(id){} this.getName = function(){ console.log(name); return name; }; this.getPrice = function(){ console.log(price); return price; }; this.setName = function (mName) { name = mName; }; this.setPrice = function (mPrice) { price = mPrice; }; this.copy = function () {}; // 構造器 this.setName(newName); this.setPrice(newPrice); } })(); Book.prototype = { isJSBook: false, display: function () { } }
使用:
var myBook = new Book("id","name","price");
使用方法與普通的是一致的。
但是如果不加new關鍵詞的話
var myBook = Book("id","name","price");
當不使用new關鍵詞的時候只會將Book執(zhí)行一遍并且this指針為window
并且所有的值都在
可以使用將return的function寫為一個私有的類,并且將外部的prototype寫在里面,讓閉包看起來更加的舒服,更像是一個整體。
2、對象的安全模式在使用類的時候可能會忘記使用new關鍵詞。這個時候調用就像上面說的那種。執(zhí)行一遍代碼,并且其中的this指向window。
可以使用安全模式避免忘記使用new的情況。
列子:
var Book = function (title,time,type) { if(this instanceof Book){ this.title = title; this.time = time; this.type = type; }else{ return new Book(title,time,type); } }
本質可以看出就是加了一層判斷。
3、js原型鏈對引用類型的無力。當原型鏈上的值為引用的時候:
var test = function () { } test.prototype.nums = [1,2,3,4]; ins1 = new test(); ins2 = new test(); console.log(ins2.nums); ins1.nums.push(5); console.log(ins2.nums);
這里就可以看出來如果原型鏈上的值為引用類型的時候會出現問題。
4、多繼承多繼承的實現就是將父類們的所有屬性進行拷貝到一個到當前類上。
當遇到引用類型的時候應當深拷貝,但是此處我們只討論淺拷貝的問題。
以下代碼為多繼承:
var mix = function () { var len = arguments.length; var target = arguments[1]; var arg; for(var i = 1;i < len;i++){ arg = arguments[i]; for(var property in arg){ target[property] = arg[property]; } } return arg; }5、多態(tài)
多態(tài)是對arguments里面的值得個數進行統計,根據不同的情況給予不同的回應。
簡單例子
var add = function () { var len = arguments.length; switch (len) { case 0: return 10; case 1: return 10 + arguments[0]; case 2: return arguments[0] + arguments[1]; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100580.html
摘要:設計模式與開發(fā)實踐讀書筆記。發(fā)布訂閱模式又叫觀察者模式,它定義了對象之間的一種一對多的依賴關系。附設計模式之發(fā)布訂閱模式觀察者模式數據結構和算法系列棧隊列優(yōu)先隊列循環(huán)隊列設計模式系列設計模式之策略模式 《JavaScript設計模式與開發(fā)實踐》讀書筆記。 發(fā)布-訂閱模式又叫觀察者模式,它定義了對象之間的一種一對多的依賴關系。當一個對象的狀態(tài)發(fā)生改變時,所有依賴它的對象都將得到通知。 例...
摘要:設計模式與開發(fā)實踐讀書筆記。看此文章前,建議先看設計模式之發(fā)布訂閱模式觀察者模式在中,已經介紹了什么是發(fā)布訂閱模式,同時,也實現了發(fā)布訂閱模式。 《JavaScript設計模式與開發(fā)實踐》讀書筆記。 看此文章前,建議先看JavaScript設計模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經介紹了什么是發(fā)布-訂閱模式,同時,也實現了發(fā)布-訂閱模式。但是,就Part1...
摘要:設計模式與開發(fā)實踐讀書筆記。看此文章前,建議先看設計模式之發(fā)布訂閱模式觀察者模式在中,已經介紹了什么是發(fā)布訂閱模式,同時,也實現了發(fā)布訂閱模式。 《JavaScript設計模式與開發(fā)實踐》讀書筆記。 看此文章前,建議先看JavaScript設計模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經介紹了什么是發(fā)布-訂閱模式,同時,也實現了發(fā)布-訂閱模式。但是,就Part1...
閱讀 1325·2023-04-26 00:10
閱讀 2428·2021-09-22 15:38
閱讀 3746·2021-09-22 15:13
閱讀 3503·2019-08-30 13:11
閱讀 646·2019-08-30 11:01
閱讀 3028·2019-08-29 14:20
閱讀 3208·2019-08-29 13:27
閱讀 1726·2019-08-29 11:33