c语言sscanf函数的用法是什么
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~