zoukankan      html  css  js  c++  java
  • JavaScript Patterns 5.7 Object Constants

    Principle

    1. Make variables shouldn't be changed stand out using all caps.
    2. Add constants as static properties to the constructor function.
    // constructor
    
    var Widget = function () {
    
        // implementation...
    
    };
    
    // constants
    
    Widget.MAX_HEIGHT = 320;
    
    Widget.MAX_WIDTH = 480;
    1. General-purpose constant object
    set(name, value) // To define a new constant
    
    isDefined(name) // To check whether a constant exists
    
    get(name) // To get the value of a constant

     

    var constant = (function () {
    
        var constants = {},
    
            ownProp = Object.prototype.hasOwnProperty,
    
            allowed = {
    
                string: 1,
    
                number: 1,
    
                boolean: 1
    
            },
    
            prefix = (Math.random() + "_").slice(2);
    
        return {
    
            set: function (name, value) {
    
                if (this.isDefined(name)) {
    
                    return false;
    
                }
    
                if (!ownProp.call(allowed, typeof value)) {
    
                    return false;
    
                }
    
                constants[prefix + name] = value;
    
                return true;
    
            },
    
            isDefined: function (name) {
    
                return ownProp.call(constants, prefix + name);
    
            },
    
            get: function (name) {
    
                if (this.isDefined(name)) {
    
                    return constants[prefix + name];
    
                }
    
                return null;
    
            }
    
        };
    
    }());

    Testing the implementation:

    // check if defined
    
    constant.isDefined("maxwidth"); // false
    
    // define
    
    constant.set("maxwidth", 480); // true
    
    // check again
    
    constant.isDefined("maxwidth"); // true
    
    // attempt to redefine
    
    constant.set("maxwidth", 320); // false
    
    // is the value still intact?
    
    constant.get("maxwidth"); // 480

    References: 

    JavaScript Patterns - by Stoyan Stefanov (O`Reilly)

  • 相关阅读:
    持续集成-禅道
    nohup.out 日志切分
    Flannel 介绍及使用场景
    【Unity游戏开发】初探Unity动画优化
    fastHttp服务端处理请求的过程
    PHPExcel导出文件代码实现
    PHPExcel 1.8
    CKfinder 安装与使用
    Ckeditor的配置
    Ckeditor的使用
  • 原文地址:https://www.cnblogs.com/haokaibo/p/Object-Constants.html
Copyright © 2011-2022 走看看