`

javaScript设计模式中的掺元类

    博客分类:
  • js
阅读更多

今天虽然周末但是没有撒懒,因为媳妇要上班所以我得送她下去,一方面也是习惯了早起,睡不住。好久没有发表文章了,今天特意上来发表发表文章 ,呵呵。

以下是javascript的掺元类的一个demo,什么是掺元类呢,据我的理解掺元类你可以把他当做c里面的头文件,或者是java中的基类,然后呢其他的类想用这个类里面的方法,那么就直接继承它就可以了,但是这里的继承又不是java中的那种继承,其实更应该理解为对基类中方法的copy。下面上代码看看:

首先我们写一个User类,如下

function User(name,age){
    this.name = name;
    this.age = age;
};
User.prototype = {
    setName : function(n){
        this.name = n;
    },
    getName : function() {
        return this.name;
    },
    setAge : function(age){
        this.age = age;
    },
    getAge : function(){
        return this.age;
    }
};

然后呢再写一个掺元类,如下

var Mixin = function(){};
Mixin.prototype = {
    serialize : function(){//写这个方法的意图是为了查看类继承了掺元类后的结构
        var output = [];
        for(v in this){    //这里的this是指当前类,v代表中的中的属性(包含方法),this[v]表示属性的value
            output.push(v+':'+this[v]);
        }
        return output.join(",");    //这句话的意思是序列化继承后的当前类
    },
    name_age : function(){
        return this.name+"_"+this.age;
    },
    bb : function(){}
};

当然了掺元类本身不具备copy的功能,我们必须要写一个使用掺元类的方法的方法,如下

//copy掺元类里面所有的方法

function augment2(re,giv){
    for(mth in giv.prototype){
        if(!re.prototype[mth]){
            re.prototype[mth] = giv.prototype[mth];
        }
    }
};

/
function augment(re,giv){

//if的意思是根据自己的意愿copy需要的方法,而不是所有的
    if(typeof(arguments[2]) == 'object'){//这里要判断第三个参数是否为数组 这里不严谨大家自己改下
        for(var i=0;i<arguments[2].length;i++){
            re.prototype[arguments[2][i]] = giv.prototype[arguments[2][i]];
        }
    }else{

//这里的意思是如果没有第三个参数,或者是其他的那么直接copy掺元类里面的所有的方法到当前类
        augment2(re,giv);
    }
}

//这句话很重要,这句话的意思是继承掺元类,如果丢了这句话那么就无法使用掺元类里面的方法,这里只copy掺元类里面的serialize跟name_age方法

augment(User,Mixin,['serialize','name_age']);

如果写copy所有的方法那么就这样写

augment(User,Mixin);

接着我们实例化一个User对象

var au = new User('信科',23);

然后我们就可以调用掺元类里面的方法了

alert(au.serialize());

大家现在就可以观察效果了

希望大家多多指教,可能有的地方表示不准确,希望大家见谅!

 

 

0
0
分享到:
评论

相关推荐

    JavaScript设计模式与开发实践.pdf

    本书《JavaScript设计模式与开发实践》是JavaScript语言的设计模式和开发实践的指南,旨在帮助初、中、高级Web前端开发人员和想往架构师晋级的中高级程序员,掌握JavaScript设计模式和开发实践的知识。本书共分为三...

    JavaScript设计模式.pdf

    单体模式是JavaScript中最基本的设计模式之一。它的主要作用是提供一个命名空间,减少全局变量的数量,避免代码冲突,并组织代码使其易于维护。单体模式可以用来划分命名空间,组织代码和避免代码冲突。 2. 工厂...

    JavaScript设计模式+JavaScript模式+JavaScript异步编程

    在JavaScript中,常见的设计模式包括: - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 工厂模式:创建对象时避免使用new操作符,提供更灵活的实例化过程。 - 观察者模式:定义对象间的一种一对多...

    JavaScript 设计模式 azw3

    然后,集中介绍了很多流行的设计模式在JavaScript中的应用,包括Module(模块)模式、Observer(观察者)模式、Facade(外观)模式和Mediator(中介者)模式;最后,还探讨了模块化的JavaScript模式、jQuery及其插件...

    学用JavaScript设计模式

    书中不仅介绍了JavaScript中经典和现代的设计模式,还包括了针对不同JavaScript开发框架(如MVC、MVP、MVVM)的设计模式,以及最新的模块化JavaScript设计模式(AMD、CommonJS、ES Harmony)和jQuery中的设计模式。...

    javascript DOM高级程序设计 及 javascript 设计模式

    在吃透了前面所说的书之后,接下来两本书的顺序已经无关紧要了,《JavaScript DOM高级程序设计》(注意和《JavaScript 高级程序设计》相区别)和《JavaScript设计模式》,这两本都是重量级的书,能让你的JS技术上一...

    Javascript设计模式源码

    作者针对常见的开发任务,从YUI等实战代码中取材,提供了专家级的解决方案,不仅透彻剖析了JavaScript扣的面向对象编程,而且深入探讨了如何用JavaScript实现以前只在服务器端应用的设计模式,如何根据实际场景选择...

    JAVASCRIPT设计模式[收集].pdf

    在JavaScript中,封装不是语言内置的功能,但可以通过一些技巧比如立即执行函数表达式(IIFE)和私有变量等来实现。封装有助于创建自包含的、独立的功能模块,这样的模块不仅可以在当前项目中重用,还可以在其他项目...

    javascript 设计模式

    在JavaScript中,由于其特殊的原型继承机制和动态类型特性,设计模式的应用有一些独特的特点。 ### 1. 继承机制 在JavaScript中,继承主要通过原型链(Prototype Chain)实现。每个对象都有一个`__proto__`属性,...

    总结JavaScript设计模式编程中的享元模式使用

    在JavaScript中实现享元模式时,我们需要关注几个角色: 1. 客户端(Client):客户端是调用享元工厂来获取对象的类,通常指的是应用中需要用到对象的部分。 2. 享元工厂(Flyweight Factory):负责创建和管理享...

    学用 JavaScript 设计模式.pdf

    本书的以那些期望提高自己在设计模式方面的知识并将它们应用到javascript编程语言中的专业开发者为目标读者。 一些所涉及的概念(闭包,原型继承)将假设读者具备一定程度的基本的预备知识和理解。如果你发现自己...

    JavaScript设计模式之单例模式.md

    为了帮助大家快速和较好地理解JavaScript设计模式中的单例模式,本文对JavaScript的单例模式进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。

    JavaScript设计模式 (美)哈梅斯(Harmes,R), (美)迪亚斯(Diaz,D)著 源码+PDF

    第二部分则专注于各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些...

    JavaScript设计模式与开发实践_himppf_js_jspremise_精通javascript_Js设计模式_

    在JavaScript中,"模块模式"是常见的设计模式,它通过闭包来封装变量和函数,防止全局污染。"工厂模式"可以用来动态地创建具有相似特征的对象,而"单例模式"确保一个类只有一个实例,常用于管理共享资源。"装饰器...

    JavaScript高级与设计模式.zip

    在JavaScript中,常见的设计模式有: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供一个全局访问点。在JavaScript中,通常通过闭包实现。 2. **工厂模式(Factory)**:用于创建对象,隐藏了对象...

    javascript 设计模式之享元模式原理与应用详解

    本文实例讲述了javascript 设计模式之享元模式。分享给大家供大家参考,具体如下: 享元模式说明 定义:用于解决一个系统大量细粒度对象的共享问题: 关健词:分离跟共享; 说明: 享元模式分单纯(共享)享元模式,...

    javascript设计模式源码 谢廷晟译

    javascript设计模式 哈梅斯 (Ross harmes) (作者), 迪亚斯 (Dustin Diaz) (作者), 谢廷晟 (译者) 整书源码

Global site tag (gtag.js) - Google Analytics