原生类型之间的比较 JavaScript, Class 是否与 {} 相同?

Comparison between native types JavaScript, Class is same than {}?

我正在写一些关于 Javascript 中 ClassObject 之间的比较的测试。我对JS中Class的真实objective有些怀疑。

如果所有内容都是 object(基本类型除外),则说明:

class Foo {
    static anyFunc () {}
}
const FooInstance = new Foo();

等于

const FooInstance = {
    anyFunc () {}
}

?

如何衡量这些实施的 performance/memory allocated/sizeof?可以在 C++ 或 JS 中。

非常感谢!

const FooInstance = {
    anyFunc () {}
}

FooInstance 在这种情况下直接是 Object 的一个实例。如果你看它的原型链,它马上就是 ObjectanyFunc 方法将在实例本身上找到。

class Foo {
  static anyFunc () {}
}
const FooInstance = new Foo();

FooInstance 在这种情况下是 Foo 的一个实例(并且 Object 也是因为所有对象都从它继承)。如果你看它的原型链,它会先有 Foo 的原型,然后是 Object 的原型。此外, anyFunc 不是实例(也不是原型)上的方法。它将附加到构造函数本身(即 Foo.anyFunc()FooInstance.constructor.anyFunc(),但不是 FooInstance.anyFunc())。

简而言之,没有。他们不相等。

在视觉上,链看起来像:

// First case:
instance ---> Object.prototype
- anyFunc

// Second case:
instance -> Foo.prototype -------> Object.prototype
            - constructor (Foo)
              - anyFunc

How I can measure the performance/memory allocated/sizeof of these implementations?

可以忽略不计。别担心。或者只有当它成为问题时才担心它。