美文网首页
高级任务6-前端设计模式

高级任务6-前端设计模式

作者: RookieD | 来源:发表于2018-01-06 22:01 被阅读0次

写出 构造函数模式、混合模式、模块模式、工厂模式、单例模式、发布订阅模式的范例

  • 构造函数模式
function Person(name, age) {
        this.name = name
        this.age = age
        }

        Person.prototype.sayName = function() {
            return this.name
        }

var student = new Person("jack", 30)
  • 混合模式
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 = create(Person.prototype)

function create(parentObj) {
    function F(){}
    F.prototype = parentObj
    return new F()
}

Student.prototype.sayScore = function() {
    console.log(this.score)
}

var stu1 = new Student("jack", 18, 60)
  • 模块模式
var Person = (function() {
    var name = "jack"
    function sayName() {
        console.log(name)
    }
    return {
        name: name,
        sayName: sayName
    }
}())

Person
  • 工厂模式
function createPerson(name) {
        var person = {
            name: name
            }
        person.sayName = function() {
                console.log(this.name)
            }
            return person
        }

createPerson("mary").sayName()

function createPerson(name) {
    var person = {
        name: name,
        sayName: function() {
            console.log(this.name)
        }
    }
    return person
}

createPerson("mary").sayName()
  • 单例模式
var People = (function(){
    var instance
    function init(name) {
        return {
            name: name
        }
    }

    return {
        createPeople: function(name) {
            if(!instance) {
                instance = init(name)
            }
            return instance
        }
    }
}())

console.log(People.createPeople("jack"))
console.log(People.createPeople("mary"))
  • 发布订阅模式
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(i=0; i<events[evt].length; i++) {
            events[evt][i].handler(args)
        }
    }

    function off(evt) {
        delete events[evt]
    }

    return {
        on: on,
        fire: fire,
        off: off
    }
}())

EventCenter.on("hello", function(){console.log("test")})
EventCenter.fire("hello")
EventCenter.fire("hella")

使用发布订阅模式写一个事件管理器

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(i=0; i<events[evt].length; i++){
            events[evt][i].handler(args)
        }
    }

    function off(evt) {
        delete events[evt]
    }

    return {
        on: on,
        fire: fire,
        off: off
    }
}())

var Event = EventCenter

Event.on('change', function(val){
    console.log('change...  now val is ' + val);  
});
Event.fire('change', '饥人谷');
Event.off('change');
Event.fire('change', '饥人谷');

相关文章

  • 高级任务6-前端设计模式

    写出 构造函数模式、混合模式、模块模式、工厂模式、单例模式、发布订阅模式的范例 构造函数模式 混合模式 模块模式 ...

  • 高级6-前端设计模式

    1. 写出构造函数模式、混合模式、模块模式、工厂模式、单例模式、发布订阅模式的范例 2. 使用发布订阅模式写一个事...

  • 高级任务6---前端设计模式

    1、写出 构造函数模式、混合模式、模块模式、工厂模式、单例模式、发布订阅模式的范例。 构造函数模式 混合模式 模块...

  • 高级6-常见设计模式

    1.写出 构造函数模式、混合模式、模块模式、工厂模式、单例模式、发布订阅模式的范例。 构造函数模式: 混合模式: ...

  • JavaScript设计模式之单例模式【惰性单例】

    在提高开发水平,往中高级前端工程师中,利用设计模式是必不可少的一条道路。掌握设计模式的思想远远比硬套重要,因为设计...

  • JS设计模式-其他1-原型模式 & 桥接模式

    其他设计模式系列开始介绍前端不常用的设计模式有哪些设计模式? 创建性模式原型模式 结构型模式桥接模式 组合模式 ...

  • Node.js与单例模式

    1、前端的JavaScript单例模式 单例模式是非常常用的设计模式,前端的JavaScript中单例模式代码可能...

  • 前端常见的9种设计模式

    本文目录: 1.概念 2.设计原则 3.设计模式的类型 前端常见设计模式1:外观模式(Facade Pattern...

  • Typescript 职责链模式(Chain of Respon

    标签: 前端 设计模式 职责链模式 typescript Chain of Responsibility 请仔细阅...

  • 前端设计模式之责任链模式

    前言 设计模式系列: 前端设计模式之工厂模式[https://juejin.im/post/5edf047b6fb...

网友评论

      本文标题:高级任务6-前端设计模式

      本文链接:https://www.haomeiwen.com/subject/ievynxtx.html