我正在研究能够检测可以通过JSON作为存储向量安全地保存和恢复的所有状态变量的逻辑。
这部分意味着检测到可以“安全”转储和还原的类型,这很容易做到:
typeof
)instanceof Array
与迭代元素中的^组合)typeof
对象和value.__proto__.constructor.name
)尽管有一种我在努力奋斗。这是通过调用创建的:
var nn = new convnetjs.Net();
这是从哪个来的: https://github.com/karpathy/convnetjs/blob/master/src/convnet_net.js#L8
如果您检查上面显示的nn
变量,就会看到此内容。
这是我尝试过的:
nn instanceof Object
===真
Object.getPrototypeOf(nn)
-有趣的是,这暴露了上面链接(第12行)中分配给Net.prototype
的功能。好像是线索。
Object.getPrototypeOf(nn).toString()
== [object Object]
Object.getPrototypeOf(nn) instanceof Object
=== true。有道理,因为它是包含附加到原型的自定义函数的对象。
Object.getPrototypeOf(nn).constructor.name
=== Object
有人会知道或有想法如何安全地检测这种类型的物体吗?普通对象很好,但是我不想用修改后的原型覆盖对象。
答案 0 :(得分:0)
如果要使用它来验证它是纯对象还是具有自定义原型的对象:
const isPlainObject = Object.getPrototypeOf(value) === Object.getPrototypeOf({});