const FooInstance = {
anyFunc () {}
}
FooInstance
в данном случае является непосредственно экземпляром Object
.Если вы посмотрите на его цепочку прототипов, она сразу же Object
.Метод anyFunc
будет найден в самом экземпляре.
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
Как измерить производительность / выделенную память / размер этих реализаций?
Это ничтожно мало.Не беспокойся об этом.Или беспокоиться об этом, только когда это становится проблемой.