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)

  • 相关阅读:
    git查看工作状态和历史提交
    PowerDesigner工具栏palette的方法
    WCF证书制作
    ASP.NET.4 高级程序第4版 第3章Web窗体
    tbar居右显示的两种方法
    测试
    转载extj grid
    正值
    网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍[转]
    SQL Server 启用“IP+端口”连接
  • 原文地址:https://www.cnblogs.com/haokaibo/p/Object-Constants.html
Copyright © 2011-2022 走看看