|
|
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
тут вот проблема возникла - расширить объект свойством из другого Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. как скопировать свойство из одного объекта в другой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 08:08:56 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
sp, простите, что за кусок говнокода Вы выложили? :) [SRC JS] var o = {}; var o1 = { get age(){ return 21; }, } o1.val = 10; // тут у объекта o1 появляется свойство val со значением 10 var age = o1.val; // тут значение свойства копируется в переменную age, это значение равно 10, к чему комментарий //-> 21 ? o[age] = o1[age]; // здесь у объекта o появляется свойство с ключом 10 и значеним undefined, т.к. у o1 нет свойства с таким ключом o.age = 100; // тут ни фига не копируется, а создаётся свойство age у объекта o со значением 100 age = o.val; // и наконец age получает значение undefined, т.к. у объетка o не определено свойство val Вы хотите, чтобы у объектов o и o1 появилось статическое свойство val, или просто ссылку на один и тот же объект хотите присвоить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:16:14 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Поправил SRC: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:16:48 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:17:10 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
skyANAВы хотите, чтобы у объектов o и o1 появилось статическое свойство val, или просто ссылку на один и тот же объект хотите присвоить?Или тупо значение скопировать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:39:24 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
skyANA, прошу прощение - не то скопировал Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:40:37 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
sp, воспользуйтесь что-ли файрбагом, или чем другим :) Из этого: Код: javascript 1. 2. 3. 4. Только последний комментарий верный. 1. У объекта не появляется свойства age со значением 21, а появляется свойство 21 со значением undefined; 2. Значение 21 не заменяется на 100, а у объекта o появляется свойство age с cо значением 100. И ответьте на вопрос: Вам статическое свойство нужно, или ссылка на один и тот же объект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:49:25 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Оказывается что inherited accessor properties - это геттеры и сеттеры, объявленные как Код: javascript 1. 2. 3. 4. по скорости доступа не уступают обычным свойствам объявленным Код: javascript 1. 2. 3. 4. а свойства объявленные через Код: javascript 1. 2. 3. 4. 5. минимум в 20 раз медленнее в доступе вышеуказанным методам объявления свойств Т.к. приходится производить операции "наследования" и расширения прототипов на ходу - уж очень хочется расширять объекты 2м методом из других объектов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:50:06 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Ну вы уже к точкам придираетесь! :) смысл же понятен!! Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:53:38 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Исправленному верить! "уж очень хочется расширять объекты 2м методом из других объектов!" читать как "уж очень хочется расширять объекты 1м методом из других объектов!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 10:55:20 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Я так ни фига и не понял :) Вы хотите скопировать свойства из одного объекта в другой, при этом если меняем свойства у одного объетка, то они меняются и у другого? Или Вы хотите некий метод типа defineProperty? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 11:19:19 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
sp, может Вам сюда: ООП в Javascript: наследование ? Там и про extend (расширение) есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 11:21:32 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
skyANAsp, может Вам сюда: ООП в Javascript: наследование ? Там и про extend (расширение) есть :) ООП с наследованием у миня есть - со всеми классическими плюшками :) мне нужны проперти! Мне нужно к существующему объекту добавить accessor properties! К новому конструируемому - все понятно сам умею (в книжке прочитал), а вот к существующему!? Как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 16:22:24 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
skyANA, Классами и наследованием балуюсь с самого появления Prototype.js Мне нужны свойства как для краткости записи так и для банального предотвращения неумышленного изменения юзерами свойст классов. Соглашения об именованиях и правилах работы с членами классов - они для джентельменов и тех кто их читает. Но у нас жентельменов мало :) - толи недоучились то ли в лом, но на практике юзеры нашего кода всегда что-то важное да и сломают! Да и в конце-концов - себя хочется уважать - не писать километровые аксессоры и писать как нормальный человек :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 16:28:38 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 17:05:21 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
В контексте ООП хотелось бы реализовать эти свойства в классах Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. соответственно эти свойства надо перенести из хэша-описателя класса в прототип класса при этом возможно и дополнение свойств прототипа класса по ходу программы: Код: javascript 1. 2. 3. 4. 5. 6. 7. т.е. Somthing.prototype уже существует и чем-то заполнен и к нему надо добавит свойство prop2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2012, 19:21:11 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что можно тупо свойства скопировать: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2012, 13:44:29 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Или допилить Class.extend(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2012, 13:45:20 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
skyANA, а теперь гляньте на свойство two <!DOCTYPE HTML> <html> <head> </head> <body> <script> var one = { _name: 'Vasya', get name() { return this._name; }, set name(value) { this._name = value; } }, two = {}; for (var key in one) { two[key] = one[key]; } two.name = 'Petya'; var descriptor = window.Object.getOwnPropertyDescriptor(one, 'name'); alert('descriptor: ' + descriptor.get); var descriptor = window.Object.getOwnPropertyDescriptor(two, 'name'); alert('descriptor: ' + descriptor.value); </script> </body> </html> Мы видим что это не то свойство с геттером и сеттером которое хотелось бы нам иметь !) Как допилить extend? Касаясь данного примера - как после алертов добавит в one еще какое-нибудь свойство с геттером и сеттером ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2012, 15:36:03 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
прошу прощения - забыл тег форматирования кода поставить ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2012, 15:36:40 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
прочитал MDN - там сказано что добавить к существующему объекту свойства можно только через __defineGetter__/__defineSetter__ или Object.defineProperty - что резко увеличивает время доступа к свойствам от 20 до 80 раз!! печально.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2012, 17:17:56 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
spМне нужны свойства как для краткости записи так и для банального предотвращения неумышленного изменения юзерами свойст классов. Код: javascript 1. 2. Экономия невероятная. Ну что защита в обоих случаях реализуется идентично - тоже вроде очевидно (вопрос только во внешнем виде доступа). Чем так противен внешний вид функционального доступа - так и осталось непонятным. И стОило тратить время на тестирование альтернативных ЯКОБЫ более феншуйных вариантов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2012, 17:59:37 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, тем что банальное присваивание Код: javascript 1. поломает всю работу! :) а юзеры так и норовят таки так написать, то-ли по забывчивости то-ли очепятовшись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2012, 08:43:32 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
spEdd.Dragon, тем что банальное присваивание Код: javascript 1. поломает всю работу! :) а юзеры так и норовят таки так написать, то-ли по забывчивости то-ли очепятовшись Ну сорри, таким юзерам - хоть в 100 раз медленнее - побоку. Ты вылизываешь сутками какую-то безделушку. А этот юзверь не долго думая соорудит иррациональную архитектуру своей задумки, которая положит четырехядерник. Не доступом к свойствам, а идиотизмом. Т.е. если это расчитано на эстетов, а не на профессионалов, то плевать на производительность ДОСТУПА К СВОЙСТВУ - это время всяко ничтожно по сравнению с остальными операциями. Если ж цель - максимальная эффективность во всех слоях приложения, то плевать на тех, кто не в состоянии понять, как используются методы и их клинит после безуспешной попытки выполнить obj.setImportantProperty = 5. Ну не вижу я пересечений этих двух множеств, хоть каплю стоящзих внимания. Исключения может быть какие-то - один на миллион талантище, но упертый фанат Дельфи и ненавидит всякое setBlahblah(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 06:42:26 |
|
||
|
JS: Какой метод работает быстрее: назначенный ч/з obj.prototype или Object.defineProperty?
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, в общем согласен, хотелось и красиво и быстро)) но думаю что мои изыскания кому-нибудь пригодятся, чтобы не гадать - стоит или не стоит использовать свойства)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2012, 23:35:49 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=37828093&tid=1449713]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 424ms |

| 0 / 0 |
