Skip to content

Latest commit

 

History

History
41 lines (29 loc) · 1 KB

deepFreeze.md

File metadata and controls

41 lines (29 loc) · 1 KB
标题 标签
deepFreeze(深度冻结对象) object,recursion(对象,递归)

深度冻结对象。

  • 使用Object.keys()得到被传递的对象的所有属性,Array.prototype.forEach()来遍历它们。
  • 在所有属性上递归调用 Object.freeze(),必要时应用 deepFreeze()
  • 最后,使用 Object.freeze() 冻结给定的对象。

代码如下:

const deepFreeze = obj => {
  Object.keys(obj).forEach(prop => {
    if (typeof obj[prop] === 'object') {
      deepFreeze(obj[prop]);
    }
  });
  return Object.freeze(obj);
};

调用方式:

'use strict';

const val = deepFreeze([1, [2, 3]]);

val[0] = 3; // not allowed
val[1][0] = 4; // not allowed as well

应用场景

结果如下:

<iframe src="codes/javascript/html/deepFreeze.html"></iframe>