• js的oop和函数式编程的思考


        写程序,很追求一次编写,多次重用。对于js也不例外。

        可是,如果只是为了重用,我们写个function,然后留出参数,以后需要重用,通过传入不同参数到function里,就完全可以实现重用了。那么为什么我们还要用oop来写js呢?用oop的方式,我们其实也是通过传参数到function中,来实现实例化不同对象的目的的。oop方式和普通function相比有什么优点呢?

        我感觉最大的优点在于对代码的封装性。如果只是一个简单的功能,没必要用oop,因为几乎没有区别。可是,如果是几个相关的函数来实现一个功能,那么oop的优点就表现出来了。举个例子:

    var c;

    function a()

    {

        doA(c);

    }

    function b()

    {

        doB(c);

    }

    如果我们需要实现一个功能,功能中需要用于a(),b()来操作同一个变量c,那c就只能定义在a()和b()的外面,定义成一个全局变量。这样,他的作用域才会同时到达a()和b()。可是,如果就这样把c写在所有函数外,他就成了一个全局变量,一个作用域大到你控制不了程度。如果是大团队合作,分工做模块,很可能这个c,就和别人在另一个地方定义的c冲突了。然后出现意想不出的错误。全局变量是一种污染,是很不好的作法。那么,怎么做比较好呢?用oop的方式就可以解决这个问题。

    function d()

    {

       this.c = c;

       this.doA = fuction(){this.c};

        this.doB = fuction(){this.c}

    }

    通过this关键字,方法doA()和doB()都可以找到c,而c又只在类d里,没有造成全局变量污染。这就达到了很好的封装效果。另外,还有很重要的一点是,oop的类还有命名空间的作用。比起全局范围中的函数,类中的方法很不容易和别的函数重名,就算重名了,只要改一个实例化时的对象名,就可以了。

  • 相关阅读:
    POJ 1265 Pcik定理
    POJ 1380 坐标旋转
    POJ 1788
    POJ 3714 平面最近点对
    POJ 1905 二分
    POJ 1151 矩形面积并
    POJ 1654 多边形面积
    ZOJ 1010 判断简单多边形+求面积
    about work
    Python 打印 不换行
  • 原文地址:https://www.cnblogs.com/cly84920/p/4427146.html
Copyright © 2020-2023  润新知