【发布时间】:2021-11-18 10:47:09
【问题描述】:
我正在编写一个序列化对象的程序。作为其中的一部分,我需要从实例中获取类,以便将来创建一个新实例。我注意到我可以调用fn.constructor 或Object.getPrototypeOf(fn).constructor 来获取实例来自的类。例如:
class Foo {}
const myFoo = new Foo();
const constructor1 = myFoo.constructor;
const constructor2 = Object.getPrototypeOf(myFoo).constructor;
在上面,constructor1 和 constructor2 似乎总是相同的,除非我手动将它们设置为其他值。是否存在这些值会不同的情况?
【问题讨论】:
-
“除非我手动将它们设置为其他值”是什么意思?
-
"是否存在这些值会不同的情况?" - 你是只考虑
classes 的实例还是任意对象? -
"我正在编写一个序列化对象的程序。" - 我建议为此调用
.toJSON(),而不是依赖一些构造函数。一个对象可能拥有一些内部状态,如果知道特定的类,您就无法恢复这些状态。 -
你为什么在标记为ecmascript-5的问题中使用
class语法和Object.getPrototypeOf? -
1.像 obj.constructor = 'foo', 2, 任意对象, 3. 我正在处理的程序知道类,这就是它可以恢复状态的原因, 4. 这是我的错误,我将删除标签
标签: javascript object constructor prototype