定义对象不可修改的属性

282 阅读1分钟
  1. Object.defineProperty()
Object.defineProperty(对象名,属性名,描述符)
描述符
{
    writable: false, // 不可读写
    configurable // 不可配置
}

// 举例
Object.defineProperty(objName, "name", {writable: false, value: "zhangSan"});
  1. 单例模式
// 匿名函数+立即执行+返回对象+闭包
var obj = function(){
    // 定义私有属性和方法

    return {
        // 共有属性和方法
    }
}()

//注意
let obj = function () {
    let name = 'knockkey'
    return {
        age: 18,
        getAge: function () {
            console.log(age)
        },
        getName: function () {
            console.log(name)
        }
    }
}();
obj.name = '123';
obj.getName()// 'knockkey'
  1. Object.freeze(obj) 使用该方法后,不可给对象添加和删除属性,也不可对现有属性进行更改