zoukankan      html  css  js  c++  java
  • (转载)JavaScript中面向对象那点事

        鉴于自己在JavaScript这方面比较薄弱,所以就找了一本书恶补了一下(被称为犀利书的JavaScript权威指南)。书的内容虽然多了点,但这也充分说明了js中的东西还是挺多的。虽然我们的定位不是前端,但最好还是了解一下js这个发展了将近20年但依然很火的技术。

            两年前,写过一篇关于JavaScript闭包的博客,所以对闭包这个词印象很深,在看这书的时候,又看到了闭包,那么这次再看闭包,会有什么不同的理解呢?

            大家都知道,在JavaScript中是没有类的概念的,更没有私有、公有的成员变量这样的概念。但是它又是确确实实存在着这些东西。

            看下面例子:

     
    1. function MyClass(){  
    2.     this.name='李四';  
    3.     var age=2;  
    4. }  
    5.   
    6. var test=new MyClass();  
    7. alert(test.name); //李四  
    8. alert(test.age)     //undefined  
    9. test.name='张三';  


            在用谷歌浏览器调试的过程中,age的值始终无法看到,但确实是存在的。虽然在调用test.age的时候,不会报错,但它取不出来age的值。而对于name来说,它用的是this.来修饰的,那么它就相当于是public的变量了。而用var声明的变量,就是private,至于class(Java中)这个嘛,非function莫属了。

            那么对于private的变量应该怎样访问呢?

            在Java中对于private的变量,我们要访问它,是为其提供了get、set方法对其进行操作,在这里也一样。看下面代码:

            

     function MyClass(){  
    1.     this.name='李四';  
    2.     var age=2;  
    3.     this.getAge=function(){  
    4.         alert(age);  
    5.     }  
    6.     this.setAge=function(value){  
    7.         if(value>0 && value 150)  
    8.             age=value;  
    9.     }  
    10. }  
    11.   
    12. var test=new MyClass();  
    13. test.getAge()     //2  
    14. test.setAge(11);  
    15. test.getAge();    //11  


            在这里,这完全模拟了一个Java类中的public、private属性及私有属性的操作。

            对于私有属性操作的方式,在JavaScript中有一个特有的称呼:闭包。

            通过Java类的声明来理解JavaScript,突然发现曾经认为难以理解的闭包,变得不太理解为什么定义这样一个概念。

            虽然目前为止还没有生成javascript属性的get、set方法,但ext已经提供了这样的工具方法来使javascript对象的属性直接具有get、set方法。

            在以往的javascript使用过程中,我们更多的是采用面向过程方式,这也就暴露了我们对于js代码的复用程度很低。js的面向对象,势在必行。

  • 相关阅读:
    python实现读取并显示图片的两种方法
    如何在jupyter中安装R
    FPGA设计千兆以太网MAC(3)——数据缓存及位宽转换模块设计与验证
    FPGA设计千兆以太网MAC(2)——以太网协议及设计规划
    FIFO深度计算
    【不定期更新】FPGA/IC岗位常见笔试面试题总结(基础知识)
    【原创】建立与保持时间裕量详细分析
    利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统
    【转载】泰勒展开式
    利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/3813652.html
Copyright © 2011-2022 走看看