БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
||||||
1 | ||||||
arguments08.02.2011, 13:23. Показов 2636. Ответов 31
Метки нет (Все метки)
Обнаружил наистраннейшую вещь - вот этот код:
Добавлено через 2 минуты Хм, это связано со ссылочными переменными. arg1 - ячейка массива, я её изменяю на тип object, а это ссылочный тип... и что-то непонятно... arg1-то не объект по началу и по идее не должен ссылаться...
0
|
08.02.2011, 13:23 | |
Ответы с готовыми решениями:
31
Arguments.callee.name arguments[] не могу понять что не так Write a function nextInLine which takes an array (arr) and a number (item) as arguments. Чем заменить arguments.callee? |
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
|
||||||
08.02.2011, 15:29 | 3 | |||||
У объекта Arguments есть одна очень необычная особенность. Когда у функции имеются именованные аргументы, элементы массива объекта Arguments являются синонимами локальных переменных, содержащих аргументы функции. Массив arguments[] и именованные аргументы - это два разных средства обращения к одной переменной. Изменение значения аргумента через имя аргумента меняет значение, извлекаемое через массив arguments[]. Изменение значения аргумента через массив arguments[] меняет значение, извлекаемое по имени аргумента.
Пример:
2
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
09.02.2011, 11:53 [ТС] | 4 |
Значит, это исключение. Большое спасибо за такой подробный рассказ.
Добавлено через 18 часов 3 минуты Ещё один вопрос, он касается логических операций. Как я понял, при сравнении объектов и функций сравнивается их "url" в ОЗУ, а при сравнении переменных с др. типами сравнивается их значение. Так?
0
|
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
|
||||||
09.02.2011, 12:31 | 5 | |||||
Hagrael, Если ты емеешь ввиду логическую операцию сравнения то существует два способа сравнения ==(равенство) и ===(идентичность).
В JS числовые, строковые и логические значения сравниваются по значению. В этом случае рассматриваются две различные величины, а операторы == и === проверяют, идентичны ли эти два значения. Это значит, что две переменные равны или идентичны, только если они содержат одинаковое значение. Например, две строки равны, только если обе содержат в точночти одинаковые символы. В то же время объекты, массивы и функции сравниваются по ссылке. Это значит, что две переменные равны, только если они ссылаются на один объект. Два различных массива не могут быть равными или идентичными даже если они содержат равные или идентичные элементы. Две переменные, содержащие сылки на объекты, массивы или функции, равны, только если они ссылаются на один и тот же объект, массив или функцию. Основное отличие операторов == и === заключается в том, что === возвращает false если типы двух переменных не совпадают, а == всё же пытается преобразовать один тип к другому. Пример:
1
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
09.02.2011, 14:58 [ТС] | 6 |
Kdn, ещё раз большое спасибо Ещё один маленький вопросик - при перечислении for (prop in obj), где obj - массив, выдаваться будут только его ячейки, да?
0
|
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
|
||||||
09.02.2011, 15:09 | 7 | |||||
Hagrael, Выдаваться куда? Если ты емеешь ввиду что будет записано в prop, то туда будет передан индекс массива, т.е:
1
|
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
||||||
09.02.2011, 16:22 | 8 | |||||
Оператор for..in будет перечислять также свойства прототипа. Для отличия их от собственных свойств есть метод hasOwnProperty
1
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
09.02.2011, 17:07 [ТС] | 9 |
Всё понятно
0
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
15.02.2011, 13:45 [ТС] | 10 |
А самому никакими средствами нельзя запретить показ каких-то функций при перечислении в цикле for in?
0
|
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
|
|
15.02.2011, 15:15 | 11 |
Hagrael, Можно попробовать использовать замыкания.
В этом случае внутри объекта класса допустим ты храниш массив функций. Объект так же имеет одну функцию, скажем getFunction(index) . Она извлекает по индексу функцию. При вызове for in у данного объекта она покажет лишь getFunction. И Всё. Ну а если сложнее нужно то можно не по индексу а по имени например замаскировать. Если не понял, могу пример написать. Добавлено через 11 минут Да забыл сказать что такая реализация подойдёт для динамического создания функций. С наследованием через прототип такое не прокатит
0
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
15.02.2011, 15:48 [ТС] | 12 |
Kdn, ну эта реализация очень убогая ИМХО.
0
|
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
|
|
15.02.2011, 16:57 | 13 |
Hagrael, Я ведь не ясновидящий, и не знаю как и для чего тебе это вообще надо. Просто предлогаю вариант.Предложи лучше =)
0
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
15.02.2011, 17:01 [ТС] | 14 |
Kdn, лучше ничего нет
0
|
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
||||||
16.02.2011, 16:55 | 15 | |||||
1
|
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
|
|
16.02.2011, 17:18 | 16 |
Vovan-VE, Я ему предлагал использовать замыкания.
0
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
16.02.2011, 18:13 [ТС] | 17 |
Vovan-VE, но и извне нельзя будет обратиться к функции bar.
0
|
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
|
|
16.02.2011, 18:26 | 18 |
Hagrael, нельзя. И у дочернего класса bar так же будет не доступен.
0
|
БТР - мой друг
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
|
|
17.02.2011, 11:25 [ТС] | 20 |
Не по теме: Vovan-VE, Kdn, а если не секрет, вы где-нибудь работаете? Или у вас свои проекты? Просто интересно, куда идет большая часть веб-программистов - на фирмы или создают свои проекты. Хотя последнее, как мне кажется, сделать сложно. Добавлено через 16 часов 30 минут А ведь получается, что при вызове функции все ее локальные переменные создаются и остаются в памяти до окончания просмотра страницы, так? Ведь как бы иначе работали замыкания?
0
|
17.02.2011, 11:25 | |
17.02.2011, 11:25 | |
Помогаю со студенческими работами здесь
20
NoReverseMatch at / Reverse for 'detail_news' with arguments '('',)' and keyword arguments '{}' not found... Too many output arguments Error: too many arguments Too few arguments to function Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |