• 私有变量


    构造函数的私有变量,属性和方法都是独立的。

     1 window.onload = function() {
     2     var person = new Person("Li");
     3     alert(person.getName());        // Li
     4     person.setName("Joe");
     5     alert(person.getName());        // Joe
     6 
     7     var person2 = new Person("Ji");
     8     alert(person2.getName());        // Ji
     9     person.setName("Joe");
    10     alert(person2.getName());        // Ji
    11 };
    12 
    13 /**
    14  * 人(每次调用构造函数都会重新创建方法)
    15  * @param {string} name 名字
    16  */
    17 function Person(name) {
    18     this.getName = function(){
    19         return name;
    20     };
    21 
    22     this.setName = function(value){
    23         name = value;
    24     }
    25 }

    静态私有变量,属性和方法都是共享的。

     1 window.onload = function() {
     2     var person = new Person("Li");
     3     alert(person.getName());        // Li
     4     person.setName("Joe");
     5     alert(person.getName());        // Joe
     6 
     7     var person2 = new Person("Ji");
     8     alert(person2.getName());        // Ji
     9     person.setName("Joe");
    10     alert(person2.getName());        // Joe
    11 };
    12 
    13 /**
    14  * 静态私有变量,属性和方法都是共享的,不会重复创建,但是实例之间会互相影响
    15  * @return {string} 姓名
    16  */
    17 (function(){
    18     var name = "";
    19 
    20     Person = function(value){
    21         name = value;
    22     };
    23 
    24     Person.prototype.getName = function(){
    25         return name;
    26     }
    27 
    28     Person.prototype.setName = function(value){
    29         name = value;
    30     };
    31 })();

     增强的模块模式,单例的特权方法。

     1 window.onload = function() {
     2     alert(application.getComponentCount());    // 1
     3     application.registerComponent("hello");
     4     alert(application.getComponentCount());    // 2
     5 };
     6 
     7 /**
     8  * 增强模块模式,单例的特权方法
     9  * @return {object}
    10  */
    11 var application = function(){
    12     // 私有变量和函数
    13     var components = new Array();
    14 
    15     // 初始化
    16     components.push(new String("hello"));
    17 
    18     // 创建apllication的一个局部副本
    19     var app = new String();
    20 
    21     // 公共接口
    22     app.getComponentCount = function(){
    23         return components.length;
    24     };
    25 
    26     app.registerComponent = function(str){
    27         if (typeof str == "string") {
    28             components.push(str);
    29         }
    30     };
    31 
    32     // 返回这个副本
    33     return app;
    34 }();
  • 相关阅读:
    线程数究竟设多少合理
    Elasticsearch 技术分析(八):剖析 Elasticsearch 的索引原理
    作为程序员你是如何学习的?
    系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
    kms相关文档
    删除所有docker容器镜像
    ubuntu mysql5.7安装
    GORM自定义日志配置
    SQL清空全部表数据
    Nginx 证书
  • 原文地址:https://www.cnblogs.com/tinyTea/p/9946985.html
Copyright © 2020-2023  润新知