Javascript объекты против примитивов - PullRequest
3 голосов
/ 05 февраля 2012

В настоящее время я много занимаюсь разработкой в ​​ООП Javascript.В частности, я много имею дело с координатами и измерениями, и у меня есть много переменных, определенных как объекты, например:

coords = {
    x:10,
    y:15
};

dimensions = {
    width:500,
    height:250
}

Но мне интересно, было бы быстрее / эффективнее указатьзначения как отдельные, примитивные переменные:

coordX = 10;
coordY = 15;

dimWidth = 500;
dimHeight = 240;

Может кто-нибудь кратко объяснить преимущество / недостаток каждого метода строковых переменных?С точки зрения удобства использования я нахожу объекты проще, поскольку вы можете группировать связанные значения вместе;хотя я понимаю, что это медленнее.Но это медленнее или занимает больше памяти, чем определение большего количества переменных?

Приветствия.

РЕДАКТИРОВАТЬ: Ух ты!Я никогда не ожидал такого количества ответов, особенно так быстро!Спасибо всем за ваши ответы.

Кажется, что любые различия в производительности неоспоримы, но это может относиться только к простым сценариям.У меня есть постоянный цикл, который должен работать с максимально возможной частотой кадров.Каждый цикл использует много объектных переменных для хранения данных, как описано выше.Так есть ли вероятность проблем с производительностью в этих обстоятельствах?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Вы используете все, что наиболее подходит для рассматриваемой проблемы.

Если в вашем коде имеет смысл использовать объект, используйте его.Если переменные имеют больше смысла, используйте их.

2 голосов
/ 05 февраля 2012

Производительность не должна быть проблемой - свойства объявляются для объекта, и для их доступа не требуется цепочка прототипов (также движки javascript становятся все более и более производительными в этой области).

Я лично предпочел бы использовать подход ОО в этой ситуации, поскольку он позволяет логически группировать значения, которые будут понятнее любым другим разработчикам, которые смотрят на ваш код (и, если вы чем-то похожи на меня, возможно ты через пару месяцев времени!).

...