今天虽然周末但是没有撒懒,因为媳妇要上班所以我得送她下去,一方面也是习惯了早起,睡不住。好久没有发表文章了,今天特意上来发表发表文章 ,呵呵。
以下是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());
大家现在就可以观察效果了
希望大家多多指教,可能有的地方表示不准确,希望大家见谅!
分享到:
相关推荐
然后,集中介绍了很多流行的设计模式在JavaScript中的应用,包括Module(模块)模式、Observer(观察者)模式、Facade(外观)模式和Mediator(中介者)模式;最后,还探讨了模块化的JavaScript模式、jQuery及其插件...
JavaScript设计模式.pdf
javascript高级-javascript设计模式。视频文件(无加密可在线观看)
JavaScript设计模式与开发实践.pdf
在吃透了前面所说的书之后,接下来两本书的顺序已经无关紧要了,《JavaScript DOM高级程序设计》(注意和《JavaScript 高级程序设计》相区别)和《JavaScript设计模式》,这两本都是重量级的书,能让你的JS技术上一...
JavaScript 设计模式(高清扫描版本)- 张容铭
作者针对常见的开发任务,从YUI等实战代码中取材,提供了专家级的解决方案,不仅透彻剖析了JavaScript扣的面向对象编程,而且深入探讨了如何用JavaScript实现以前只在服务器端应用的设计模式,如何根据实际场景选择...
针对JavaScript语言特性全面介绍了更适合JavaScript程序员的了16个常用的设计模式,讲解了JavaScript面向对象和函数式编程方面的基础知识,介绍了面向对象的设计原则及其在设计模式中的体现,还分享了面向对象编程...
JavaScript设计模式+JavaScript模式+JavaScript异步编程,合计三本pdf文件,5分超值哦。
享元模式最适合于解决因创建大量类似对象而累及性能的问题,本文将来总结JavaScript设计模式编程中的享元模式使用,包括在DOM操作时的利用示例:
深入讲解Javascript开发原理以及Javascript客户端脚本开发的设计模式,看完该书可以拓展WEB开发人员的Javascript开发的思路。
本篇文章简单介绍了JavaScript设计模式中的两种,分别是单例模式和观察者模式,并且举了例子便于理解,希望大家一起交流,共同进步。
本书的以那些期望提高自己在设计模式方面的知识并将它们应用到javascript编程语言中的专业开发者为目标读者。 一些所涉及的概念(闭包,原型继承)将假设读者具备一定程度的基本的预备知识和理解。如果你发现自己...
外文翻译:学用JavaScript设计模式
为了帮助大家快速和较好地理解JavaScript设计模式中的单例模式,本文对JavaScript的单例模式进行了分析并进行简易的代码演示,希望本文能够给有需要的人带来一点小小的帮助。
Javascript 设计模式 很经典 第一本 Javascript 设计模式 很经典 第一本 Javascript 设计模式 很经典 第一本
JAVASCRIPT设计模式[收集].pdf
包括面向对象,面向对象编程思想,javascript面向对象,设计模式通俗版,快速进入模式学习与实践。