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

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

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

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

            看以下样例:

    function MyClass(){
        this.name='李四';
        var age=2;
    }
    
    var test=new MyClass();
    alert(test.name); //李四
    alert(test.age)     //undefined
    test.name='张三';

            在用谷歌浏览器调试的过程中,age的值始终无法看到。但确实是存在的。尽管在调用test.age的时候。不会报错,但它取不出来age的值。

    而对于name来说,它用的是this.来修饰的。那么它就相当于是public的变量了。

    而用var声明的变量,就是private。至于class(Java中)这个嘛,非function莫属了。

            那么对于private的变量应该如何訪问呢?

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

    看以下代码:

            

    function MyClass(){
        this.name='李四';
        var age=2;
        this.getAge=function(){
            alert(age);
        }
        this.setAge=function(value){
            if(value>0 && value < 150)
                age=value;
        }
    }
    
    var test=new MyClass();
    test.getAge()     //2
    test.setAge(11);
    test.getAge();    //11

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


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


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

            尽管眼下为止还没有生成javascript属性的get、set方法,但ext已经提供了这种工具方法来使javascript对象的属性直接具有get、set方法。

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

            

  • 相关阅读:
    化零为整WCF(5) 宿主Hosting(宿主在IIS, Application, WAS, WindowsService)
    使用Aspose.Cell控件实现Excel高难度报表的生成(三)
    Winform开发框架之动态指定数据表
    Winform分页控件之纯分页显示处理
    利用Aspose.Word控件实现Word文档的操作
    代码生成工具之Winform查询列表界面生成
    代码生成工具之界面快速生成
    Winform开发中手写签名的实现
    代码生成工具之数据库表及字段名称转义
    Winform开发框架之通用附件管理模块
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6839170.html
Copyright © 2011-2022 走看看