草庐IT

javascript - 如何从另一个类访问一个类的方法?

我想在JavaScript中使用面向对象编程技术,但我无法从一个类访问另一个类的方法。怎样才能像下面这样呢?classone{write(){console.log("Yes!Idid!");}}classtwo{varobject=newone();tryingMethod(){object.write();}}我收到以下错误:UncaughtSyntaxError:Unexpectedidentifier-->>forvarobject=newone(); 最佳答案 您的语法不合法。您的控制台中应该有一个错误,向您显示哪一行代码

javascript - 这是做 JS OOP 的好方法吗?

我想问一下我的以下OOP风格的优缺点。我按以下方式编写我的JS类。varMyClass=function(){//privatevarsvarself=this,_foo=1,_bar="test";//publicvarsthis.cool=true;//privatemethodsvarinitialize=function(a,b){//initializeeverything};vardoSomething=function(){vartest=34;_foo=cool;};//publicmethodsthis.startRequest=function(){};//call

javascript - 在 JavaScript 中选择 OOP 模式

在其他人的帮助下和一些资源中,我将这些放在一起。我做了一个fiddleofeverything,精简代码发布在下方。基本上我已经学会了如何使用这些模式中的每一个,但我很好奇这些方法之间更根本的区别。下游代码实际上与这些模式中的任何一个相同,但是除了个人偏好之外,是否有理由应该使用一个而不是另一个?此外,尽管我已尝试收集最常见的模式,但如果更好,请提出您自己的模式。模式1(基于对象):varmouseDiff={"startPoint":{"x":0,"y":0},"hypotenuse":function(a,b){//dosomething},"init":function(){//

Javascript 继承 : Parent's array variable retains value

我在这里尝试在JavaScript中使用继承,我发现Parent类中的数组值被Child类继承时出现问题。下面的代码是正常的继承:varParent=function(){this.list=[];};varChild=function(){};Child.prototype=newParent;Child.prototype.constructor=Child;varobj1=newChild;obj1.list.push("hello");console.log(obj1.list);//prints["hello"];当我将新的Child对象(继承包含名为list的数组变量的Pa

javascript - Javascript 中的数据隐藏

在Java编程语言中,private关键字用于数据隐藏-标记为私有(private)的字段或方法在类或子类之外不可见。这是如何在javascript中实现的? 最佳答案 在JavaScript中,标准方式是使用ModulePattern,如下所示。vartestModule=(function(){varmyPrivateVar=0;varmyPrivateMethod=function(someText){console.log(someText);};return{myPublicVar:"foo",myPublicFuncti

javascript - 如何访问实例上的静态成员?

这是代码,我为此苦苦挣扎了几个小时,想法是跟踪创建了多少实例,但也可以调用静态方法和更改/更新静态成员。有类似的问题,但我无法对我的问题实现任何解决方案。//objectconstructorfunctionFoo(){this.publicProperty="Thisispublicproperty";}//staticpropertyFoo.staticProperty="Thisisstaticproperty";//staticmethodFoo.returnFooStaticProperty=function(){returnFoo.staticProperty;};cons

javascript - JavaScript 中的 private 和 public 这两个词到底有多保守

每次构建JS库时,我都有这样的概念:(function(window,undefined){varLibName=function(){varprivateAPI={method:function(){}};varpublicAPI={publicMethod:function(){}};returnpublicAPI;}window.LibName=LibName;})();但我一直渴望只是做:(function(window,undefined){varLibName=function(){varprivate={method:function(){}};varpublic={pu

javascript - javascript 中的不可变类型

在我看来,不可变类型在Javascript中是不可能的,或者有人知道创建它们的任何技巧吗?这是好事还是坏事?例如,varPoint2D=functionPoint2D(x,y){var_x=x;var_y=y;functionconstructor(){varself={};//Pseudo-Immutableconceptself.x=function(){return_x;}();self.y=function(){return_y;}();returnself;}returnconstructor();}这当然不是真正不可变的,但如果它是1)充分证明属性'x'和'y'是gette

javascript - Gmail 的 JavaScript 中使用的设计模式?

谁能告诉我在构建Gmail时使用了哪些设计模式(如果有的话)?我理解它背后的概念-排队一些请求,在每个请求完成时增加栏,在所有请求都关闭时初始化显示-但我特别感兴趣是否有特定的设计模式可以用来模仿这些功能。 最佳答案 我有一个类似的问题并解决了它:数据预加载通过向服务器发送异步请求来工作。当进度条可见时,我会为每个请求增加一个计数器。进度条的大小==计数器。由于请求发送很快,用户永远不会注意到进度条的最大值发生变化。当请求回答到来时,我每次都会让进度条前进一次。仅此而已。当最后一个请求到达时,预加载完成。当回复很少并且快速连续到达时

javascript - 在 AngularJS 指令中实现继承

我正在尝试在AngularJS指令中实现OOP继承以制作可重用的控件。我正在使用Base2'sClassdefinition为继承。我在想的是实现这样的指令然后我会为常用功能创建一个BaseControl类angular.module('base',[]).factory('BaseControl',function(){returnBase.extend({'restrict':'E','require':'^parentForm'/*...*/};});然后我会创建特定的控件angular.module('controls',['base']).factory('TextContr