Skip to content

Latest commit

 

History

History
34 lines (25 loc) · 933 Bytes

isDeepFrozen.md

File metadata and controls

34 lines (25 loc) · 933 Bytes
标题 标签
isDeepFrozen(深度冻结对象) object,recursion(对象,递归)

检查对象是否被深度冻结。

  • 使用递归。
  • 在给定对象上使用 Object.isFrozen()。
  • 使用 Object.keys()、Array.prototype.every() 来检查所有键是深度冻结的对象还是非对象值。
const isDeepFrozen = obj =>
  Object.isFrozen(obj) &&
  Object.keys(obj).every(
    val => typeof val !== 'object' || isDeepFrozen(obj[val])
  );

调用方式:

const x = Object.freeze({ a: 1 });
const y = Object.freeze({ b: { c: 2 } });
isDeepFrozen(x); // true
isDeepFrozen(y); // false

应用场景

结果如下:

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