Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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场景中,OOP的使用是否合理?_Javascript_Oop - Fatal编程技术网

在这个javascript场景中,OOP的使用是否合理?

在这个javascript场景中,OOP的使用是否合理?,javascript,oop,Javascript,Oop,OOP在这里是合理的吗 今天是我在一家小型初创公司工作的第一天。这家初创公司有一位能干的JS开发人员,他有很多自定义JS,使用OOP实现模式窗口等功能。更重要的是,他已经将几乎所有的数据显示(例如使用编辑/删除按钮显示的数据行)转换为某种形式的javascript OOP表示 我们正在尝试做的一件事是删除对modal的大量使用,只在主窗口上直接显示内容。通常这只意味着复制/粘贴一组html/php代码,这些代码以其他方式显示在模式窗口中。然而,由于这个开发人员已经在OOP中开发了所有东西,并且所

OOP在这里是合理的吗

今天是我在一家小型初创公司工作的第一天。这家初创公司有一位能干的JS开发人员,他有很多自定义JS,使用OOP实现模式窗口等功能。更重要的是,他已经将几乎所有的数据显示(例如使用编辑/删除按钮显示的数据行)转换为某种形式的javascript OOP表示

我们正在尝试做的一件事是删除对modal的大量使用,只在主窗口上直接显示内容。通常这只意味着复制/粘贴一组html/php代码,这些代码以其他方式显示在模式窗口中。然而,由于这个开发人员已经在OOP中开发了所有东西,并且所有这些与UI相关的对象都紧密地联系在一起,所以离开模式窗口似乎需要更多的劳动/修复

当我接受这份工作时,我很兴奋,并认为我会获得一些实践OOP的经验。但一天后,我还没有看到它的效用,最糟糕的情况是,它似乎适得其反


我错过什么了吗?什么时候在javascript中使用OOP是个好主意/坏主意

我认为这是一种很好的实用方法,但与任何其他语言中的OOP一样,它可以很好地实现,也可以很差地实现。JavaScript的OOP技术可以正确地分离代码,而不是使用严格的实用方法,所以我认为这不是一个坏主意。但从听起来,你可能想尝试重构设计,使其更加简化,然后移动代码

在JavaScript中做任何事情都需要考虑,这取决于在JavaScript中做了什么,比如安全性、可维护性、跨浏览器支持等等


HTH.

OOP是一个非常强大的工具,可以确保不需要重写代码,并且代码是可维护的,但如果操作不当,则可能产生相反的效果。它们被用来确保代码是可维护的,OOP是其中的一个重要部分。似乎是这方面的权威。

由于JavaScript中几乎所有内容都是对象,因此很难避免代码中出现某种程度的OOP。OTOH,大多数JavaScript框架更关注语言的功能方面

无论如何,我怀疑您真正遇到的问题是UI和数据模型之间的解耦不足。如果是这样的话,那么看看那些明确将它们分开的框架,比如knockout.js


我要说的是,OOP有一种倾向,就是把大脑弯曲成错误的形状。我记得在OOP和OOAD的早期,对象应该负责将自己呈现给GUI的想法非常普遍。尽管存在问题,但这是OOP核心原则的直接结果,即对象的行为应该与其数据相耦合。

如果不了解其实现的更多细节,很难说这种方法是否好。然而,web应用程序中有一种强烈的趋势,就是在客户端上用Javascript进行大量的OO设计(以及MVC或MVP设计模式)。此外,页面的大部分呈现都是使用Javascript完成的——用于此目的的框架,如Backbone.js(或上文提到的Knockout.js)非常流行,并且非常有趣


Javascript本身实际上是一种非常好的面向对象语言(请参见douglascrockford对此的评论),目前正在经历一种复兴,尤其是年轻的开发人员

也许吧。我对OOP知之甚少。但我发现,将某些数据的显示绑定到特定类型的窗口是疯狂的。我太习惯于简单地使用模态插件并调用另一个充当模态的php页面。要删除模式,我只需将上一个模式的php复制粘贴到父php页面中即可。@Henry:听起来您确实存在紧耦合问题,这可以通过将数据与UI分离并通过MVC或MVVM框架链接来解决。这与OOP本身无关。您可以设计带或不带OO的解耦数据模型(尽管我更喜欢数据的关系视图而不是OO视图)。感谢您帮助我解决这个问题。