关闭。这个问题是opinion-based.它目前不接受答案。想改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.3年前关闭。Improvethisquestion我开发jQuery插件已经有一段时间了,我想我现在知道如何设计一个很好的插件了。一个问题一直困扰着我,那就是如何以一种强大而优雅的方式处理私有(private)函数。我的插件通常看起来像这样:(function($){$.fn.myplugin=function(...){...//somesharedfunctionality,forexample:this.css('background
我经常使用这种结构:varexample=(function(){functionprivateFn2(){...}functionprivateFn1(){...}return{publicMethod1:function(){...},publicMethod2:function(){...}};}());我想知道的是:如果privateFn1是唯一调用privateFn2的函数/方法,按如下方式设置它是否被认为是更好的做法?为清晰起见已编辑varexample=(function(){functionprivateFn1(){functionprivateFn2(){}...pr
对于我的Web应用程序,我在JavaScript中创建一个namespace,如下所示:varcom={example:{}};com.example.func1=function(args){...}com.example.func2=function(args){...}com.example.func3=function(args){...}我还想创建“私有(private)”(我知道这在JS中不存在)命名空间变量,但我不确定最好的设计模式是什么。会不会是:com.example._var1=null;或者设计模式会是别的东西吗? 最佳答案
在JavaScript中,我可以通过在构造函数中声明来创建私有(private)和特权方法。通过这种方式,我必须将它们移出对象的原型(prototype)。然后我失去了继承的可能性和一些性能,因为每个对象都将拥有这些方法的自己的副本,而不是访问一个原型(prototype)对象。所以我现在的问题是什么可能是petter模式:是否使用私有(private)和特权方法。我不太喜欢悬挂,所以我想避免这种情况。那怎么办呢?你的经历是什么? 最佳答案 我从未发现在JavaScript中创建所谓的“私有(private)”函数有任何值(valu
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预期结果。另请参阅:StackOverflowquestionchecklist关闭9年前。Improvethisquestion我正在使用闭包来创建具有私有(private)和公共(public)方法的对象。看起来像这样-varDog=(function(){functionDog(){}varsize='big';var_privateSaySize=function(){return'Iama'
如何创建一个无法从外部调用的函数?varobj={function1:function(){alert("function1");},function2:function(){alert("function2...");obj.function1();}};//sohowtomakethisfunctionunaccessibleobj.function1();//andyoucouldonlycallthisfunctionobj.function2(); 最佳答案 您可能需要考虑使用YahooModulePattern.这是一个
我正在使用ReactRouter实现私有(private)路由Route组件:functionPrivateRoute({component:Component,authed,emailVerified,...rest}){return(authed===true?:}/>)}预期行为:authed通过使用redux-persist通过页面刷新持久保存所以在页面刷新或重新加载时,如果authedProp是true那么路由器应该呈现从来没有去路径"/"问题所在的实际行为:与authed===true(坚持)重新加载页面或刷新页面会导致发生以下操作(选中reduxdevtools)那个行动
考虑到具有私有(private)属性的对象创建模式,一种方法是:functionMyStack(){varlist=[],index=0;this.push=function(val){returnlist[index++]=val;};this.pop=function(){//...}}varstack1=newMyStack();stack1.push(5);varstack2=newMyStack();stack2.push(11);问题在于:Stack的每个实例都有它自己的“push”和“pop”方法副本。另一种实现构造方法的方法是:functionMyStack(){thi
如何在polymer中拥有私有(private)非静态变量?在:Polymer('component-one',{internalState=1,ready(){this.anotherInternalState=1;}/*morevariablesandfunctions*/});internalState和anotherInernalState都暴露给外部(例如,可以通过类似的方式访问:document.querySelector('component-one').internalState(当从外部更改internalState会使组件不稳定时,这可能是不可取的。)其中:(fun
在JavaScript中,对象的字段始终是“公共(public)的”:functionTest(){this.x_=15;}Test.prototype={getPublicX:function(){returnthis.x_;}};newTest().getPublicX();//usingthegetternewTest().x_;//bypassingthegetter但是您可以通过使用局部变量并使用闭包作为getter来模拟“私有(private)”字段:functionTest(){varx=15;this.getPrivateX=function(){returnx;};}