Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “如何避免重复”;“obj”;在同一对象上调用多个方法时?_Javascript - Fatal编程技术网

Javascript “如何避免重复”;“obj”;在同一对象上调用多个方法时?

Javascript “如何避免重复”;“obj”;在同一对象上调用多个方法时?,javascript,Javascript,我不记得在哪里见过你可以这样替换电话: my_obj.method_1(); my_obj.method_2(); my_obj.method_3(); some_construct (my_obj) { method_1(); method_2(); method_3(); } 比如说: my_obj.method_1(); my_obj.method_2(); my_obj.method_3(); some_construct (my_obj) { me

我不记得在哪里见过你可以这样替换电话:

my_obj.method_1();
my_obj.method_2();
my_obj.method_3();
some_construct (my_obj) {
    method_1();
    method_2();
    method_3();
}
比如说:

my_obj.method_1();
my_obj.method_2();
my_obj.method_3();
some_construct (my_obj) {
    method_1();
    method_2();
    method_3();
}
你知道怎么做吗


注意:我不是在寻找现代JavaScript中的方法链接,它没有语法糖分

归根结底,面向对象编程不喜欢仅仅通过阅读代码就不知道对象实例属于哪个成员

正确的方法 在面向对象编程中有一个叫做封装的概念。如果您不想调用一组应该一起调用的方法,因此需要简化代码,则需要将这些调用封装到更通用的方法中:

var obj = {
    method1: function() {}, method2: function(), method3: function(),
    doAll: function() {
         this.method1();
         this.method2();
         this.method3();
    }
};

然后你只需调用
obj.doAll()
,而不是一个接一个地调用每个方法。

在现代JavaScript中,这一点没有语法糖分

归根结底,面向对象编程不喜欢仅仅通过阅读代码就不知道对象实例属于哪个成员

正确的方法 在面向对象编程中有一个叫做封装的概念。如果您不想调用一组应该一起调用的方法,因此需要简化代码,则需要将这些调用封装到更通用的方法中:

var obj = {
    method1: function() {}, method2: function(), method3: function(),
    doAll: function() {
         this.method1();
         this.method2();
         this.method3();
    }
};
然后您只需调用
obj.doAll()
,而不是逐个调用每个方法。

构造是

with (my_obj) {
    ...
}
但是不要使用它!不推荐使用它,因为它很难看出名称是引用对象属性还是变量,并且必须在运行时重复进行检查<代码>“严格使用”实际上禁止使用

如果不想键入那么多,可以为正在使用的对象指定一个较短的名称:

o = my_obj;
o.method_1();
o.method_2();
o.method_3();
构造是

with (my_obj) {
    ...
}
但是不要使用它!不推荐使用它,因为它很难看出名称是引用对象属性还是变量,并且必须在运行时重复进行检查<代码>“严格使用”实际上禁止使用

如果不想键入那么多,可以为正在使用的对象指定一个较短的名称:

o = my_obj;
o.method_1();
o.method_2();
o.method_3();
用,但不要这样做。这是最好的,是禁止在(你应该使用)

var my_obj={
值:0,
foo:function(){
这就是价值++
},
bar:function(){
此值为1.0,值+=2
},
baz:function(){
警报(此.value)
}
};
与(我的对象){
foo();
bar();
baz();
}
使用,但不要这样做。这是最好的,是禁止在(你应该使用)

var my_obj={
值:0,
foo:function(){
这就是价值++
},
bar:function(){
此值为1.0,值+=2
},
baz:function(){
警报(此.value)
}
};
与(我的对象){
foo();
bar();
baz();
}
如果您的目标是“保存”文本,您可以:

函数callAll(o,funcs){
funcs.forEach(函数(func){
o[func]();
});
}
//有一个目标。。。
变量my_obj={
方法1:函数(){
警报(1);
},
方法2:函数(){
警报(2);
},
方法3:函数(){
警惕(3);
}
}
//现在您可以像这样调用多个对象方法:
callAll(my_obj,['method1','method2','method3'])如果您的目标是“保存”文本,您可以:

函数callAll(o,funcs){
funcs.forEach(函数(func){
o[func]();
});
}
//有一个目标。。。
变量my_obj={
方法1:函数(){
警报(1);
},
方法2:函数(){
警报(2);
},
方法3:函数(){
警惕(3);
}
}
//现在您可以像这样调用多个对象方法:

callAll(my_obj,['method1','method2','method3'])你在哪里看到的?得到了很多有用的答案,
是我一直在寻找的。我只是随便说说,我不会用的。你在哪里看到的?得到了很多有用的答案,我一直在寻找的是
。我只是随便说说,我不会用的。我只是在找这个。记住了!我一直在找这个。记住了!