我有以下javascriptfunctionperson(){//privateVariablevarfName=null;varlName=null;//assignvaluetoprivatevariablefName="Dave";lName="Smith";};person.prototype.fullName=function(){returnthis.fName+""+this.lName;};varmyPerson=newperson();alert(myPerson.fullName());我正在尝试了解javascript中面向对象的技术。我有一个简单的人对象,并在其
背景我在Nodejs中有一个使用ECMA6类的项目,我正在使用JSDoc评论我的代码,以便其他开发人员更容易访问它。但是,我的评论并没有被该工具很好地接受,我的文档也成了废墟。问题我的问题是我不知道如何使用JSDoc记录ECMA6类,而且我找不到任何合适的信息。我尝试了什么我尝试阅读theofficialexample但我发现它缺乏和不完整。我的类有成员、常量变量等等,我通常不知道哪些标签用于什么。我也在网上进行了广泛的搜索,但我发现的大多数信息都是在2015年之前,当时JSDocs还不支持ECMA6脚本。最近的文章很少,不能满足我的需要。我发现的最接近的是这个GitHubIssue:
在工作中讨论之后,我仍然没有对以下问题给出满意的答案,在我们所说的特权函数中没有其他编程语言。varkid=function(name){//Privatevaridol="ParisHilton";//Privilegedthis.get_idol=function(){returnidol;};}我能想到的唯一逻辑是,如果您让一个公共(public)函数返回一个私有(private)变量,那么该函数是“特权”执行此操作的(因为您不能直接调用它)。我们可以在php中做同样的事情,但我们不使用这个奇特的名称,我也想不起使用这个术语的任何其他语言。您甚至可能会想到,如果您需要一个“特权”
我经常使用这种结构: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