Javascript обекти срещу примитиви

В момента правя много разработки в OOP Javascript. По-специално, аз се занимавам много с координати и размери и имам дефинирани много променливи като обекти, като така:

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

dimensions = {
    width:500,
    height:250
}

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

coordX = 10;
coordY = 15;

dimWidth = 500;
dimHeight = 240;

Може ли някой да обясни накратко предимството/недостатъка на всеки метод за низ на променливите? По отношение на използваемостта намирам обекти по-лесно, тъй като можете да групирате свързани стойности заедно; въпреки че разбирам, че е по-бавно. Но по-бавно ли е или заема повече памет от дефинирането на повече променливи?

наздраве

РЕДАКТИРАНЕ: Уау! Никога не съм очаквал толкова много отговори, особено толкова бързо! Благодаря на всички за отговорите.

Изглежда, че всички разлики в производителността са отменими, но това може да се отнася само за прости скриптове. Това, което имам, е постоянен цикъл, който трябва да работи на възможно най-високия FPS. Всеки цикъл използва много обектни променливи за съхраняване на данни, както по-горе. Така че има ли потенциал за проблеми с производителността при тези обстоятелства?


person GreenImp    schedule 04.02.2012    source източник
comment
Ще бъда извънредно изненадан, ако вашето приложение действително покаже някаква забележима разлика в производителността между двете.   -  person lonesomeday    schedule 05.02.2012
comment
@The Nail: Съвсем не. Това е въпрос за Java, а не за JavaScript. Моля, прочетете по-внимателно.   -  person Platinum Azure    schedule 05.02.2012
comment
@FairyLee: това граничи с преждевременна оптимизация.   -  person outis    schedule 05.02.2012
comment
Почти дубликат на масив от променливи или отделни променливи?   -  person outis    schedule 05.02.2012
comment
Донякъде свързано: stackoverflow.com/questions/8423493/ (Премахнах и предишните си коментари, за да направя място за нови коментари.)   -  person The Nail    schedule 05.02.2012
comment
@TheNail Наздраве за тази свързана връзка. Отбелязаният отговор беше много полезен!   -  person GreenImp    schedule 05.02.2012
comment
За да се справите с проблемите с производителността, профилирайте скрипта и се справете с неефективността на алгоритмите. Дребни неща като това трябва да се разглеждат на последно място и само ако други подобрения не се окажат достатъчни и профилирането предполага, че ще има полза.   -  person outis    schedule 05.02.2012
comment
@outis наздраве за връзката - отново, много полезен ресурс! Ще разгледам профилирането с JS, всъщност не съм го правил преди.   -  person GreenImp    schedule 05.02.2012


Отговори (2)


Производителността не трябва да е проблем - свойствата са декларирани на обекта и не е необходима верига от прототипи за достъп до тях (също така двигателите на javascript стават все по-ефективни в тази област).

Аз лично бих предпочел да използвам OO подхода в тази ситуация, тъй като той позволява логично групиране на стойности, което ще бъде по-ясно за всички други разработчици, които гледат вашия код (и, ако сте нещо като мен, вероятно вие в няколко месеца!).

person Rich O'Kelly    schedule 04.02.2012
comment
Благодаря. Предпочитам да използвам Objects в случаи като този, тъй като е „по-спретнат“. Просто се опитвам да установя дали ще има някаква забележима промяна в производителността между различните методи. наздраве - person GreenImp; 05.02.2012
comment
Не само това, но е по-лесно да се разширяват обекти в бъдеще, където низ от променливи може да се обърка. - person Jeffrey Sweeney; 05.02.2012
comment
Отбелязах това като приет отговор, просто защото обяснява малко повече от другия, въпреки че те заявяват почти едни и същи неща. Благодаря на всички, които помогнаха. - person GreenImp; 05.02.2012

Използвате всичко, което е най-подходящо за конкретния проблем.

Ако има смисъл във вашия код да използвате обект, използвайте такъв. Ако променливите имат повече смисъл, използвайте ги.

person Community    schedule 04.02.2012
comment
Благодаря за отговора ви, това е почти това, което правя в момента, но скриптът ми е толкова обширен и натоварва процесора, така че търся по-добра производителност, когато е възможно. - person GreenImp; 05.02.2012