-
寫出 構(gòu)造函數(shù)模式、混合模式、模塊模式、工廠模式、單例模式、發(fā)布訂閱模式的范例。
-
構(gòu)造函數(shù)模式
var Person = function(name, age) { this.name = name; this.age = age; } Person.prototype.sayName = function() { return this.name; } var student = new Person("htkz", 30); console.log(student) -
混合模式
var Person = function(name, age) { this.name = name; this.age = age; }; Person.prototype.sayName = function() { console.log(this.name); } var Student = function(name, age, score) { Person.call(this, name, age); this.score = score; } Student.prototype = Object.create(Person.prototype); Student.prototype.sayScore = function() { console.log(this.score); } var student = new Student("htkz", 28, 99); console.log(student) -
模塊模式
var Person = (function(){ var name = "htkz"; function sayName() { console.log(name); } return { name: name, sayName: sayName } })() -
工廠模式
function createPerson(opts) { var person = { name: opts.name || 'htkz' } person.sayName = function() { console.log(this.name); } return person; } var p1 = createPerson({name: 'htkz'}); var p2 = createPerson({name: '1234'}); -
單例模式
var People = (function() { var instance; function init(name) { return name; } return { createPeople: function(name) { if(!instance) { instance = init(name); } return instance; } } })(); var obj1 = People.createPeople('ts123'); var obj2 = People.createPeople('456'); -
發(fā)布訂閱模式
var EventCenter = (function() { var events = {}; function on (evt, handler) { events[evt] = events[evt] || []; events[evt].push({ handler: handler }); } function fire(evt, args) { if(!events[evt]) { return; } for(var i = 0; i < events[evt].length; i++) { events[evt][i].handler(args); } } return { on: on, fire: fire } })(); EventCenter.on('hit', function() { console.log('hit'); }) EventCenter.fire('hit');?
-
-
使用發(fā)布訂閱模式寫一個(gè)事件管理器,可以實(shí)現(xiàn)如下方式調(diào)用
Event.on('change', function(val){ console.log('change... now val is ' + val); }); Event.fire('change', '饑人谷'); Event.off('changer');var Event = (function() { var events = {}; function on (evt, handler) { events[evt] = events[evt] || []; events[evt].push({ handler: handler }); } function fire(evt, args) { if(!events[evt]) { return; } for(var i = 0; i < events[evt].length; i++) { events[evt][i].handler(args); } } function off(evt) { delete events[evt]; } function test() { console.log(events); } return { on: on, fire: fire, off: off, test: test } })(); Event.on('change', function(val){ console.log('change... now val is ' + val); }); Event.fire('change', '饑人谷'); Event.off('change'); Event.fire('change', '饑人谷');?
js設(shè)計(jì)模式
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 單例模式 適用場景:可能會(huì)在場景中使用到對(duì)象,但只有一個(gè)實(shí)例,加載時(shí)并不主動(dòng)創(chuàng)建,需要時(shí)才創(chuàng)建 最常見的單例模式,...
- ** 寫出 構(gòu)造函數(shù)模式、混合模式、模塊模式、工廠模式、單例模式、發(fā)布訂閱模式的范例。** 單例模式 var P...
- 問答 1.寫出構(gòu)造函數(shù)模式、混合模式、模塊模式、工廠模式、單例模式、發(fā)布訂閱模式的范例。 工廠模式,想造什么造什么...
- 寫出 構(gòu)造函數(shù)模式、混合模式、模塊模式、工廠模式、單例模式、發(fā)布訂閱模式的范例。 使用發(fā)布訂閱模式寫一個(gè)事件管理器...
- 一、構(gòu)造函數(shù)模式、混合模式、模塊模式、工廠模式、單例模式、發(fā)布訂閱模式的范例 單例模式單例就是保證一個(gè)類只有一個(gè)實(shí)...