首页 > 解决方案 > 检测对象是否是使用自定义原型设计模式创建的?

问题描述

我正在研究检测任何可以通过 JSON 作为存储向量安全保存和恢复的有状态变量的逻辑。

这部分意味着检测转储和恢复“安全”的类型,这很容易:

不过,我正在努力解决一种类型的问题。这是通过调用创建的:

var nn = new convnetjs.Net();

这来自: https ://github.com/karpathy/convnetjs/blob/master/src/convnet_net.js#L8

有趣的是,Chrome 开发工具将其检测为“网络”对象: nn

nn如果您检查上面显示的 var,这就是您将看到的。

这是我尝试过的:

有人知道或知道我如何安全地检测到这种类型的物体吗?普通对象很好,但我不想用修改过的原型覆盖对象。

标签: javascriptnode.jsecmascript-6

解决方案


如果使用它来验证它是一个普通对象或一个具有自定义原型的对象:

const isPlainObject = Object.getPrototypeOf(value) === Object.getPrototypeOf({});

推荐阅读