javascript内部原理篇[javascript实现聚合]
2014-01-01 15:55 低调de草原狼 阅读(219) 评论(0) 编辑 收藏 举报javascript不仅仅能够实现继承,有时候我们仅仅是需要类中的一部分属性或者方法的时候,我们可以考虑聚合来实现
直接上例子,这里仅仅是提供一个思路,例子感觉并不能够说的特别详尽,针对聚合的更深理解,大家可以百度一下,也可以在评论中我们一起讨论
对象的实现方法:
/** * 掺元类 * 有的时候我们不需要严格的继承,我们真正需要的是一个类中的一些函数 */ (function(){ //我们准备将要被聚合的函数 var JSON = { toJSONString : function(){ var output = []; for(key in this){ output.push(key + "-->" + this[key]); } return output; } } /** * 聚合函数 */ function mixin(receivingClass, givingClass){ for(methodName in givingClass){ if(!receivingClass[methodName]){ receivingClass[methodName] = givingClass[methodName]; } } } var o = {name:"jim",age:16}; mixin(o,JSON); document.write(o.toJSONString().join(","));
类中实现
JSON.prototype = { //如果说不用prototype toJSONString :function(){ var outPut = []; for(key in this){ outPut.push(key+" --> "+this[key]) } return outPut; } } //制作聚合函数 function mixin(receivingClass,givingClass){ for(methodName in givingClass.prototype){ //本类中没有这个函数的情况下我在聚合,否则跳过 if(!receivingClass.prototype[methodName]){ receivingClass.prototype[methodName] = givingClass.prototype[methodName] } } } //var o = {name:"a",age:27} var o = function(){ this.name = "a"; this.age = 17 } mixin(o,JSON); var a = new o(); document.write(a.toJSONString().join(","))