之前看了一篇《 Create Advanced Web Applications With Object-Oriented Techniques》,里面很详细的介绍了js的oop用法,我现在想把这种方法应用到我的javaee项目中,但是担心会因为类似闭包这样的结构存在,反而给view部分增加不必要的负担(如加载慢,浏览器挂掉等等),所以想请教一下用过的朋友,麻烦给个参考意见,oop的实用性到底怎么样,他的优缺点都有哪些,谢谢啦。
JS准确来说应该算是函数式语言,但是它确实能实现面向对象。
基于为什么要使用面向对象的技术,是因为面向对象的封装、继承、多态等特性能提高编程效率,可复用性等,这一点在开发大中型项目里体现的尤为明显。当然程序运行的效率其实跟你使用的是面向过程还是面向对象无关,而是跟你写的具体代码或是应用的框架有关。
OOP是一种很好的理念,它不仅仅应用在代码实现上,而是贯穿于整个软件过程。至于OOP的缺点,我还真的是不怎么了解(如果真有的话, 或许需要更多的思考吧),因为我只用它的优点。
在JS中要不要使用OOP,这个应该是要看场合的。比如,如果你使用了一个OOP实现的框架(ExtJS等)那么使用OOP是理所当然的。但是如果只是一段简单的操作DOM的JS,那么我觉得就完全没有考虑什么OOP。记住一点,如果要用OOP,那肯定是用了OOP写出更健壮,更具可维护性,更高效的代码,而不是因为觉得OOP更高级,更显技术才用。
另外JS的闭包跟你是否使用OOP无关,这不是OOP中的特性,而是JS的链式作用域的一个特性,也就是说,你使用一般的方式在一个函数内部写了一个函数,而且把这个内部函数作为结果返回给外部调用,那一样面临闭包问题。
闭包不是JS的Bug,而是一项语言特性,因为有些时候我们能利用它改变局部变量的作用域。当然如果使用不当或是不注意的话,确实会导致一些问题,比如变量引用与预期不一致,资源占用高,网页性能问题,IE中还可能出现内存泄露等。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。