读js设计模式有感->构造函数内调用自己公用方法函数
来源:互联网 发布:怎么免费注册淘宝店铺 编辑:程序博客网 时间:2024/06/15 06:53
读《javascript设计模式》第一章有感而发
因为最近一个项目需要用面向对象书写,所以看了下张容铭老师的《javascript设计模式》,虽然才只看了一章,但是感触颇深,自己笔记记:
因为需要定义个大构造函数,函数内部有很多自己公用的方法,平时就是设置一个方法函数function 方法(){}//然后直接在构造函数内部this.show进行调用
现在自己总结三种可以”使用公共方法函数”的方法:(可能都很拙劣,但是做笔记用):
第一种:
//第一种,外部函数回调调用 function MyConstructor() { this.show = function (callback) { var a = '做事需要的参数' callback.call(this,a) }; this.addEvent = function () { }; } //平时这个函数是写构造函数内部的,直接调用,但是需要写回调所以放到外面 function public (a) { console.log('我要干的事:'+a+"->接下来写方法") } var my = new MyConstructor(); my.show(public) //打印结果:我要干的事:做事需要的参数->接下来写方法
第二种:
//第二种 :构造函数内部调用自己的方法 function MyConstructor() { this.show = function (callback1,callback2) { var a = '做事需要的参数' callback1.call(this,a) callback2.call(this,a) }; this.addEvent = function () { }; this.publicMethods ={ public1:function (a) { console.log('我要干的事:'+a+"->接下来写方法") }, public2:function (a) { console.log('我要干的事:'+a+"->接下来写方法") } } } var my = new MyConstructor(); my.show(my.publicMethods.public1,my.publicMethods.public2) //打印结果:我要干的事:做事需要的参数->接下来写方法;我要干的事:做事需要的参数->接下来写方法
第三种:(也是看设计模式有感而发)
//第三种:构造函数内或者外定义公用大F的链式叠加,然后new 实例化进行调用 function MyConstructor() { this.show = function (callback) { var a = '做事需要的参数'; publicMethods.public1(a); callback?callback.call(this,a):null return this;//进行链式调用 }; this.addEvent = function () { //addEvent内部需要使用公用方法1,进行调用传入参数 var a = '我是方法1' publicMethods.public2(a); return this;//进行链式调用 };//--> 此段容如果放到 构造函数 外面,其实可以作为回调函数用的,参考第一种但是个人考虑公用F的污染的问题,还是放到 构造函数内 //定义公用大F的链式叠加添加方法函数 Function.prototype.addMthod = function (name,fn) { this.prototype[name] = fn; return this; //进行链式添加 } //定义方法函数进行添加 var AddMethods = function(){}; AddMethods.addMthod('public1',function (a) { console.log('公用函数1要做的事'+a) return this; //进行链式调用,但是如果有参数进行操作的话,是不能返回当前this的 }).addMthod('public2',function (a) { console.log('公用函数2要做的事') return this; //进行链式调用,但是如果有参数进行操作的话,是不能返回当前this的 }) //进行调用 var publicMethods = new AddMethods(); /* 注释1 * publicMethods.public1().public2() *///--> } //当实例化成功后,(注释1)中内部的公用方法就实现了调用,但是这些方法是要在构造函数内部调用的,所以不需要直接调用 var my = new MyConstructor(); my.show().addEvent() //打印结果:公用函数1要做的事做事需要的参数;公用函数2要做的事
本来我是研究第三种方法的,感觉和以前写的不一样,但是写完三种方法后,感觉各有自己的特点吧,第二种方法也不错,这些其实还是有优化的地方,只是做个笔记用。
阅读全文
0 0
- 读js设计模式有感->构造函数内调用自己公用方法函数
- JAVA构造函数内调用方法函数
- JAVA构造函数内调用方法函数
- JS构造函数设计模式
- js中的4种函数调用模式:函数调用、方法调用、构造器调用、间接调用
- JS设计模式之构造函数模式
- js设计模式之构造函数
- js函数内直接调用后台方法
- JAVA构造函数内调用多态方法
- 构造函数内如何调用虚函数
- 一些公用js函数
- JS设计模式——构造函数模式
- JS设计模式 -原型模式与构造函数
- js调用iframe内函数
- JS---- 函数调用模式
- Js函数调用模式
- js函数调用模式
- 构造函数,析构函数内调用虚函数问题
- POJ
- 让你的代码量减少3倍!使用kotlin开发Android(一)
- 【effective java读书笔记】泛型(二)
- MAVEN常用插件解析
- 递归显示目录结构
- 读js设计模式有感->构造函数内调用自己公用方法函数
- 全国计算机二级C常考算法编程指导
- 无头单链表的所有操作(包含面试题)
- logger.isDebugEnabled和logger.isInfoEnabled的作用
- Cache写策略——write-through与write-back
- fragment中嵌套viewpager,vierpager中有多个fragment,不显示而且滑动卡顿
- Spring整体的maven路径
- Prism中使用MEF(依赖注入)案例 2
- VM-boot 之路