修改函数原型prototype,使内部函数可被外界使用

网友投稿 289 2022-11-14

修改函数原型prototype,使内部函数可被外界使用

我现在写javascript,喜欢一块块的,以得到较为明晰的结构和良好的区隔性。比如:

//块一(function(){ var a,b; function f1(){ return a + b; } function f2(){ return a - b; }})();//块二(function(){ var a,b; function f1(){ return a * b; } function f2(){ return

但有时,重用性又会受到些影响,万一其中的子函数要被外部使用呢?比如:

//图例。arcgis for js里面的图例var legend = (function () var legend = new Legend({ map: map, layerInfos: [] }, "LegendContDiv"); legend.startup(); function legendClose() $("#expandDiv").removeClass("toClose").addClass("toOpen"); $("#LegendContDiv").css("display", "none"); $("#divLegend").css("width", "18px"); $("#divLegend").css("height", "18px"); } return

现在,因为某些原因,外部也需要使用 ​​function legendClose()​​ ,怎么办?如何写得简洁漂亮些?

十月革命一声炮响,**送来了prototype。

可以这样:

//图例var legend = (function () var legend = new Legend({ map: map, layerInfos: [] }, "LegendContDiv"); legend.startup(); function legendClose() $("#expandDiv").removeClass("toClose").addClass("toOpen"); $("#LegendContDiv").css("display", "none"); $("#divLegend").css("width", "18px"); $("#divLegend").css("height", "18px"); } Legend.prototype.close = function ()//<----------- legendClose(); }; return legend;})();legend.close();//呵呵呵呵呵呵

不要因为这个legend是个arcgis对象就特别照顾它,修改prototype,它一样乖乖就范。

2017.11.13

其实呢,要扩展对象legend功能,不一定要修改其原型,直接修改它自己就行了。

//图例var legend = (function () var legend = new Legend({ map: map, layerInfos: [] }, "LegendContDiv"); legend.startup(); function legendClose() $("#expandDiv").removeClass("toClose").addClass("toOpen"); $("#LegendContDiv").css("display", "none"); $("#divLegend").css("width", "18px"); $("#divLegend").css("height", "18px"); } legend.close = function ()//<-----直接修改legend本身 legendClose(); }; return legend;})();legend.close();//呵呵呵呵呵呵

修改原型,那么所有new出来的对象都会更改;如果不想影响其他对象,直接修改本对象也是可以的。视情况选用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:USB-C接口的应用及设计原理解析
下一篇:分布式计算框架与分布式文件系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~