封装功能 代码块(自定义&&借鉴)

395 阅读1分钟

一、JavaScript 部分

1.defineConst() 定义常量

功能作用

  • 创建常量对象,即对象的属性全部是常量的对象
  • 创建一个或者多个常量

使用细则

  • 只需调用该函数,将创建好的对象传入即可转化成常量对象;
  • 创建常量,只要调用函数,传入window对象和创建好的全局变量,即可转换成常量;
语法 参数
defineConst(objName,attrName1,attrName2,...) objName,对象名;attrName,对象拥有的属性名,字符串格式

源代码

function defineConst(obj){
    if(arguments.length===1){
    // 如果参数只有1个,将对象的所有属性设为常量
    for(var item in obj){
        if(obj.hasOwnProperty(item)){
            if(typeof obj[item] === "object"){
                defineConst(obj[item])
            };
            Object.defineProperty(obj,item,{
            writable:false
            })
        };
    };
    
    }else if(arguments.length>1){
    // 如果参数有2个或者以上,将传入的属性设为常量  
   for(var index = 1;index<arguments.length;index++){
        if(obj.hasOwnProperty(arguments[index])){
            if(typeof obj[arguments[index]] === "object"){
                defineConst(obj[arguments[index]])
            };
            Object.defineProperty(obj,arguments[index],{
            writable:false
            })
        };
   }
    };
    
    // 不阻止window对象扩展
    if(obj!=window){
         Object.seal(obj);
    };
    return;
};

tip:该函数同样适用于数组,但是子对象的属性目前只能全部定为常量,不能选择性设置。