zoukankan      html  css  js  c++  java
  • js面向对象笔记

    JavaScript 私有成员实现

    到此为止,如果您任然对 JavaScript 面向对象持怀疑态度,那么这个怀疑一定是,JavaScript 没有实现面向对象中的信息隐藏,即私有和公有。与其他类式面向对象那样显式地声明私有公有成员的方式不同,JavaScript 的信息隐藏就是靠闭包实现的。见 程序清单 7:

    清单 7. 使用闭包实现信息隐藏
     // 声明 User 构造器
     function User( pwd ) { 
        // 定义私有属性
        var password = pwd; 
        // 定义私有方法 
        function getPassword() { 
            // 返回了闭包中的 password 
            return password; 
        } 
        // 特权函数声明,用于该对象其他公有方法能通过该特权方法访问到私有成员
        this.passwordService = function() { 
            return getPassword(); 
        } 
     } 
     // 公有成员声明
     User.prototype.checkPassword = function( pwd ) { 
        return this.passwordService() === pwd; 
     }; 
     // 验证隐藏性
     var u = new User( "123456" ); 
     // 打印 true 
     console.log( u.checkPassword( "123456" ) ); 
     // 打印 undefined 
     console.log( u.password ); 
     // 打印 true 
     console.log( typeof u.gePassword === "undefined" );

    JavaScript 必须依赖闭包实现信息隐藏,是由其函数式语言特性所决定的。本文不会对函数式语言和闭包这两个话题展开讨论,正如上文默认您理解 JavaScript 中基于上下文的 this 一样。关于 JavaScript 中实现信息隐藏,Douglas Crockford在《 Private members in JavaScript 》(参考资源)一文中有更权威和详细的介绍。

    引:https://www.ibm.com/developerworks/cn/web/1304_zengyz_jsoo/

    推荐:tuhttp://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html

  • 相关阅读:
    ICommand接口
    Binding自动侦听
    WPF比较两个随机数大小写,利用MVVM思想实现
    从一个ListBox中的元素点击导入另一个ListBox元素中
    利用FluidMoveBehavior制作出手机通讯录平滑的效果
    从零开始学习Gradle之三---多项目构建
    用Gradle 构建你的android程序
    iPhone/iPad调整事件递交
    iOS8-Sampler
    iOS8-Sampler
  • 原文地址:https://www.cnblogs.com/cleverbo/p/5133586.html
Copyright © 2011-2022 走看看