消息关闭
    暂无新消息!

ECMAScript6学习笔记 : 对象常量

博文作者 : 2131scwz2017-05-22发布

1:对象常量

const obj = {'name':'mary'};

// obj = {'say':'hello'}; //对象常量不可以给对象再换引用

obj.name = 'john'; //但是可以给对象常量里面的值做出改变

console.log(obj.name);

2:对象数组常量

const arr = ['1'];

// arr = [1,2,3]; //对象常量不可以给对象再换引用

arr.push('b'); //但是可以给对象常量里面的值做出改变

console.log(arr); //输出:Array [ "1", "b" ]


3:如果需要让对象常量的属性也不能被改变,需要用到冻结对象方法

const obj1 =Object.freeze({'name':'mary'});

obj1.name = 'john'; //对象常量的属性的赋值不会有效果,但是也不会抛错

console.log(obj1.name); //输出mary

4: 冻结数组

// const arr1 = Object.freeze(['1']);

// arr1.push('2'); //抛错TypeError: can't define array index property past the end of an array with non-writable length

// console.log(arr1);

5: 冻结嵌套对象

const obj2 =Object.freeze(

{

'name':'mary',

  'info':{'salary':5000,'age':40}

}

);

obj2.name = 'john'; //对象常量的属性的赋值不会有效果,但是也不会抛错

console.log(obj2.name); //输出mary

obj2.info.salary = 6000; //嵌套的子对象属性不会被冻结,可以修改

console.log(obj2.info.salary); //输出6000

6: 如果需要嵌套对象的子属性也被冻结,需要深度冻结


2个评论

555
555