Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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 为什么有多个没有参数的对象方法?_Javascript_Javascript Objects_Processing.js_Khan Academy - Fatal编程技术网

Javascript 为什么有多个没有参数的对象方法?

Javascript 为什么有多个没有参数的对象方法?,javascript,javascript-objects,processing.js,khan-academy,Javascript,Javascript Objects,Processing.js,Khan Academy,我最近开始学习和实现JavaScript中的对象。但这让我想到,如果一个对象的功能可以放在一个方法中,那么如果其中一个方法不需要参数,为什么还要使用多个方法,比如Example.prototype.update=function()?我可以定义并调用一个方法,比如Example.prototype.do=function(),然后将这两个方法拥有的所有功能都放进去。它更简单,代码更少,但是在我的对象中有一个包含几个特定方法的结构可能更好?多谢各位 编辑:我问这个关于没有参数的方法的问题,因为如果

我最近开始学习和实现JavaScript中的对象。但这让我想到,如果一个对象的功能可以放在一个方法中,那么如果其中一个方法不需要参数,为什么还要使用多个方法,比如
Example.prototype.update=function()
?我可以定义并调用一个方法,比如
Example.prototype.do=function()
,然后将这两个方法拥有的所有功能都放进去。它更简单,代码更少,但是在我的对象中有一个包含几个特定方法的结构可能更好?多谢各位

编辑:我问这个关于没有参数的方法的问题,因为如果你把几个方法的所有功能都用参数组合起来,那么在一个函数中输入十几个参数将是一件非常繁琐的工作


谢谢你的否决票

有不同的原因:

概述 在《清洁代码:敏捷软件工艺手册》中,Robert Martin说:

函数的第一条规则是它们应该很小。第二 函数的规则是它们应该比那个小。功能 长度不应为100行。函数不应该是20行 长

随之而来的还有可维护性,我的意思是,如果功能很长,人类对编码的理解就会开始缺乏

可重用性 关于函数的全部要点是重用它们。想象一个函数多次调用同一对象的另一个函数。要合并它,您可能需要复制您的编码

其他原因
  • 性能:也许你不想同时做所有的事情(可能是因为这很耗时,或者你只想在需要的时候做…),或者你根本不想做一些事情
  • 逻辑:有些东西不属于一起,比如绘图方法和擦除方法。将它们合并到一个函数是没有意义的
  • 封装:每个函数都有自己的作用域,因此如果只使用一个函数,可能会弄乱作用域

  • 被接受的答案是正确的,但我也想提供一个更简单的答案

    您考虑将
    update()
    draw()
    函数组合在一起的方式似乎是有意义的,因为您总是一个接一个地调用函数,但对于99.99%的其他函数来说,这是没有意义的

    你可以把一个函数想象成告诉计算机做一件事(“一件事”的定义有目的地非常宽泛),而编程的全部要点就是以不同的组合调用函数,使计算机做一些有趣的事情。如果你把这些功能组合起来,你就会失去这种能力

    考虑名为
    walkForward()
    turnlight()
    turnlight()
    的示例函数。通过以不同的顺序调用这些函数,您可以告诉您的参与者走您想要的任何路径

    如果我们应用您的逻辑,并将这三个函数合并为一个
    walk()
    函数,那么该函数将做什么?我们如何告诉演员走一条特定的路

    即使使用
    update()
    draw()
    函数,一个接一个地调用它们也并不总是有意义的。可能您希望在不绘制每一帧的情况下运行模拟,因此可以多次调用
    update()
    ,而不调用
    draw()
    。或者,您可能想暂停动画,因此您将停止调用
    update()
    ,而只需调用
    draw()
    。如果你把它们组合成一个函数,你就会失去这种自由


    编程就是告诉计算机做你想做的事情的自由,而组合函数则剥夺了这种自由。

    如果
    .update
    完全一样。draw
    你有一个观点。。。如果它们做不同的事情,你就找错了方向……不确定缺少参数是如何让函数做相同的事情的,显然它们没有t@JaromandaX不同的事情?@JaromandaX是正确的。考虑不需要参数的方法<代码> .Dimp()/Cudio >并返回对象状态和“代码> > DeleTeE())/代码>,它删除所有对象状态。这两个都不需要参数,但我认为代码实现为一个单独的函数都是疯狂的代码。“更新”和“绘制”方法是分开的,以便调用它们中的一个而不调用另一个。您能解释一下如何使用一个函数“弄乱范围”吗?我来讨论一下这个函数的作用范围。在这个函数中声明变量和循环变量,这些变量的作用域都是相同的。想象一下,
    var i=0
    ,它在整个函数中都是可用的,您不应该再次使用该变量……我明白了,在这个意义上,所有函数都只有一个函数也是非常有限的。