我目前正在开发JS,我仍然遇到有关使用JS的OOP的问题。 TBH我真的不明白它是如何工作的,因为它看起来非常灵活但在语法上仍然很烦人。
function Object1(){
var x;
var y;
Object1func1( param x, param y ){
///
}
}
function Object2(){
var a;
var b;
function Object2func1(){
var obj = new Object1();
obj.Object1func1( a, b );
///
}
}
我有多个"对象"在由函数定义的单个脚本中,它们在其中具有函数,我需要使用args调用它们,例如,我需要初始化一个对象,该对象将初始化其他2并调用它们自己的一些函数。我开始做这种语法:
function Object1(){
//Var here
this.function1 = function function1(){
do stuff here/
}
...
}
我为什么要这样做?因为我需要在当前对象的内部和外部调用此函数,问题是,使用此方法我无法从对象外部传递args,并且我看到它是一种非常糟糕的编码方式,所以我在这里问你是正确的方法。
在java中,例如,你只需要定义一个类,他的函数,这一切都很简单,在JS中,我真的不明白如何做到这一点......非常令人困惑。
Object1(){
function1(arg a, arg b){}
}
function2(){
function1( defaultA, defaultB );
}
OutsideObject(){
var obj = new Object1();
obj.function1(X,Y);
}
谢谢你。
编辑:所以我用原型替换了我的主要对象。我在'构造函数'中使用this.var设置了他的所有var public,但是,我无法在任何MyObject.Prototype.function()中访问任何这些this.var。它说它们未定义:/编辑2:我的问题似乎来自"这个",看起来它改变了自己,我怎么能坚持一个类变量而不是相对的东西呢?这个'好像?
编辑3:对于"绝对"变量你必须用" var"来声明它们。甚至没有,不是" this.var",我读过的所有文档都告诉我们差异是关于隐私,不是,它也是关于以相对或绝对方式获取var,在我的因为这个原因,我被困了好几个小时。问题解决了。
答案 0 :(得分:0)
要在构造函数的所有实例上创建方法,请将其作为构造函数原型的属性。
正常定义函数表达式的参数。
function Object1(){
}
Object1.prototype.function1 = function function1 (x, y){
};
var obj = new Object1();
obj.function1(3,4);