Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> намбер или не намбер? 
:(
    Опции темы
cruelangel
Дата 3.10.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



Код
Number.prototype.test= function( ){
    return true;
}
var n= 1;
alert( n.test() ? 'yes' : 'no' );
alert( ( n instanceof Number ) ? 'yes' : 'no' );


возвращает:

yes
no

у кого-нибудь есть идеи, почему?
PM MAIL   Вверх
AKS
Дата 3.10.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(cruelangel @  3.10.2007,  20:53 Найти цитируемый пост)
у кого-нибудь есть идеи, почему? 

А тут идей не может быть никаких. Все в соответствии со спецификацией.
PM MAIL   Вверх
cruelangel
Дата 3.10.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



мрак...
PM MAIL   Вверх
AKS
Дата 3.10.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(cruelangel @  3.10.2007,  21:16 Найти цитируемый пост)
мрак... 

Для еще большей "темени" (специально для Вас):
Код

Number.prototype.test = function () {
    return this;
};

var n = 1;

var nn = new Number(1);

alert(n === n.test()); // -> false

alert(nn === nn.test()); // -> true

PM MAIL   Вверх
cruelangel
Дата 3.10.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



спасибо, уже нашёл: var n= Object(1);

PM MAIL   Вверх
fidres
Дата 9.10.2007, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: нет
Всего: 1



кхы-кхы....
а не проще ли проверку на isNaN делать?
 smile 
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
AKS
Дата 9.10.2007, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(fidres @  9.10.2007,  05:41 Найти цитируемый пост)
кхы-кхы....
а не проще ли проверку на isNaN делать?
 smile  

Да уж, действительно "кхы-кхы". )))))))))))))
Вы о чем? Проверку чего и для чего? 

PM MAIL   Вверх
fidres
Дата 12.10.2007, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: нет
Всего: 1



AKS, ну на сколько я понял, чувак пытается установить является ли переменная числом... для этого проверяет её тип.
смысл в том, что есть встроенные функции определения. не помню точно isNaN или isNum... но не в этом смысл. при желании можно найти описание любой встроеной функции, а не изобретать какие-то свои методы.
 smile 
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
AKS
Дата 12.10.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(fidres @  12.10.2007,  04:03 Найти цитируемый пост)
чувак пытается установить является ли переменная числом...

Во-первых, не "чувак", а cruelangel. Именно так мы обращаемся друг к другу.
Во-вторых, cruelangel "пытается установить", а точнее пытался установить, почему  в выражении:
Код

var n= 1;
n instanceof Number // вот это и есть "камень преткновения", о который споткнулся автор темы

оператор instanceof возвращает false.

Цитата(fidres @  12.10.2007,  04:03 Найти цитируемый пост)
смысл в том, что есть ...не помню точно... но не в этом смысл.

Так в чем же смысл?

Цитата(fidres @  12.10.2007,  04:03 Найти цитируемый пост)
при желании можно найти описание любой встроеной функции, а не изобретать какие-то свои методы.

В этой теме кто-нибудь что-нибудь пытался изобрести?

PM MAIL   Вверх
cruelangel
Дата 12.10.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



fidres, NaN - это тоже число, просто оно особенное, также как и Infinity smile


AKS, в третьих я не против обращений типа "чувак", "перец", "чел" и многих других, пока они не имеют целью унижение собеседника smile


Вообще мне нужно было определить является ли переменная числом и соответственно наследует ли она методы от Number.prototype. проверка ( Object( n ) instanceof Number ) вполне себе нормально работает.

вообще, код, приведённый в первом посте, ярко иллюстрирует глупость разработчиков яваскрипта. видите ли числа наследуют у Number методы и поля, но не хотят в этом добровольно сознаваться - приходится крутить их в бараний рог.

Это сообщение отредактировал(а) cruelangel - 12.10.2007, 13:23
PM MAIL   Вверх
AKS
Дата 12.10.2007, 14:38 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(cruelangel @  12.10.2007,  13:08 Найти цитируемый пост)
Вообще мне нужно было определить является ли переменная числом и соответственно наследует ли она методы от Number.prototype. 

В таком случае написать Number.prototype.test было ошибкой.

Цитата(cruelangel @  12.10.2007,  13:08 Найти цитируемый пост)
проверка ( Object( n ) instanceof Number ) вполне себе нормально работает.

instanceof всегда нормально работает.

Цитата(cruelangel @  12.10.2007,  13:08 Найти цитируемый пост)
код, приведённый в первом посте, ярко иллюстрирует глупость разработчиков яваскрипта

Не то, чтобы "ярко" - он вообще не имеет отношения к глупости или мудрости разработчиков яваскрипт. Могу согласиться, что это яркая демонстрация знаний писавшего.

Цитата(cruelangel @  12.10.2007,  13:08 Найти цитируемый пост)
числа наследуют у Number методы и поля, но не хотят в этом добровольно сознаваться - приходится крутить их в бараний рог.

Да, числа в яваскрипт - хитрые малые. Не всем и не каждому они "добровольно признаются", кто они на самом деле. И правильно делают - при таком-то отношении:
Цитата(fidres @  12.10.2007,  04:03 Найти цитируемый пост)
есть встроенные функции определения. не помню точно isNaN или isNum

А желание "крутить в бараний рог", по моим наблюдениям, напрямую зависит еще и от темперамента программиста. Точно, как в народной мудрости: "Сила есть - ума не надо".
К тому же, модно сейчас даже сам яваскрипт "крутить в бараний рог", чего уж там про числа говорить.


PM MAIL   Вверх
cruelangel
Дата 12.10.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> В таком случае написать Number.prototype.test было ошибкой.

почему?


PM MAIL   Вверх
AKS
Дата 12.10.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(cruelangel @  12.10.2007,  16:22 Найти цитируемый пост)
> В таком случае написать Number.prototype.test было ошибкой.

почему?

А как этот метод может "определить является ли переменная числом и соответственно наследует ли она методы от Number.prototype"???

PM MAIL   Вверх
cruelangel
Дата 12.10.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



по факту своего выполнения
PM MAIL   Вверх
AKS
Дата 12.10.2007, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



cruelangel, мы друг друга не поняли - это точно.
Для меня фраза "определить является ли переменная числом и соответственно наследует ли она методы от Number.prototype" означает следующее (на примере):
Код

var n = 1;

if (n.test()) { // Ваш "факт выполнения"
    // ура! n - это номер, ведь метод test вернул true.
};

var s = '1';

if (s.test()) {  // Ваш "факт выполнения"
    // а здесь - ничего и никогда, ведь на предыдущей строке будет ошибка.
};

Возможно Вы имели ввиду проверку, вроде такой:
Код

if (s.test && s.test()) {
 
};

, но я в ней не могу усмотреть какой-либо смысл. :(
PM MAIL   Вверх
cruelangel
Дата 12.10.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



я вообще не предлагал так проверять. этот код был написан для иллюстрации, что методы-таки наследуются, в то время как instanceof возвращает false;
PM MAIL   Вверх
fidres
Дата 14.10.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: нет
Всего: 1



прошу прощения за оффтоп.

Цитата(AKS @  12.10.2007,  10:05 Найти цитируемый пост)
Во-первых, не "чувак", а cruelangel. Именно так мы обращаемся друг к другу.
я конечно глубоко уважаю ваше отношение друг к другу, но мне бы не хотелось получать какие-то указания как и к кому мне обращаться.
это во-первых.
а во-вторых, я осмыслил код именно так, как я попытался его интерпритировать словами.
есть переменная. с ней пытаются произвести действия. действия эти направлены на то, чтобы в конечном счёте установить ТИП переменной...
или я не прав?
если я что-то не правильно сказал - думаю, не лучший способ объяснять мне это нравоучением, да ещё и в общем фрэйме форума, привязываясь к словам.
есть кнопочка user posted image, на которую стоит нажать и высказать всё своё мировозрение, не показывая другим какой Вы на самом деле умный!
это так - не в обиду сказано.
я, конечно, ни на йоту не сомневаюсь в вашей компитенции в данном вопросе, но не стоит ставить себя выше других - это не прилично.
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
vasac
Дата 14.10.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Цитата(fidres @  14.10.2007,  09:37 Найти цитируемый пост)
я конечно глубоко уважаю ваше отношение друг к другу, но мне бы не хотелось получать какие-то указания как и к кому мне обращаться.

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

Цитата(fidres @  14.10.2007,  09:37 Найти цитируемый пост)
есть кнопочка user posted image, на которую стоит нажать и высказать всё своё мировозрение, не показывая другим какой Вы на самом деле умный!

Так какого же черта вы свой поток мыслей выложили здесь?
PM WWW   Вверх
Zeroglif
Дата 14.10.2007, 13:22 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(cruelangel @  12.10.2007,  21:11 Найти цитируемый пост)
код был написан для иллюстрации, что методы-таки наследуются, в то время как instanceof возвращает false

Тип примитивного значения по определению не является объектным, это не объект, соответственно не чей-либо "экземпляр", нет наследования, нет свойств и т.п., "a primitive value is a datum that is represented directly at the lowest level of the language implementation". Оператор instanceof работает только с объектами, возвращая false в противном случае, так что цитирую AKS-a: "всё в соответствии со спецификацией". Необходимо различать объектный vs. не-объектный тип в javascript, а идеи типа "всё в javascript является объектом!" из головы желательно выкинуть. Наследует и станет "экземпляром" не примитивное значение, а объект "над" ним (корреспондирующий с ним), автоматически создаваемый только в те моменты, когда в соответствии с ECMAScript это потребуется, например:

Код

alert(0..toFixed); //-> function toFixed() {...

alert(0['toFixed']); //-> function toFixed() {...

with(0) {
    alert(constructor); //-> function Number() {...
}

Number.prototype.x = 'foo';
for (var i in 0) {
    alert(i); //-> 'x'
}

Во всех этих случаях принудительно создан (на уровне логики движка это может быть реализовано как угодно) новый объект (объектный тип Оbject, объектный "подтип" или "класс" Number), который наследует свойства от Number.prototype и Object.prototype и соответственно является "экземпляром" как Number, так и Оbject (под "является экземпляром" подразумевается то, что в цепи прототипов этого объекта есть и Number.prototype, и Object.prototype). Отсюда зная, что "над" примитивным значением будет создан объект соответствующего "подтипа" совершенно не нужно конвертировать тип в объектный, достаточно только проверить сам тип примитивного значения:

Код

var n = 1;
if (typeof n == 'number') {
    alert('примитивное значение типа Number, уже должно быть всё понятно');
}

Если на месте переменной n не примитивное значение, а объект, то выявлять его природу (у кого он наследует) с помощью instanceof на мой взгляд не совсем правильно с практической точки зрения, проще проверить наличие какого-нибудь нужного свойства и с ним уже работать, в любом случае дать на 100 процентов верный ответ на вопрос о "подтипе" объекта невозможно, учитывая динамику javascript и возможность переопределения всего и вся.
PM MAIL WWW   Вверх
cruelangel
Дата 14.10.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> Во всех этих случаях принудительно создан (на уровне логики движка это может быть реализовано как угодно) новый объект 

угу, а теперь, внимание, вопрос - какого лешего instanceof не создаёт этого "надобъекта"?


> с помощью instanceof на мой взгляд не совсем правильно с практической точки зрения

очень даже правильно. тем самым мы проверяем обладает ли какой-либо объект необходимыми методами, либо в нём они сознательно перегружены. 
PM MAIL   Вверх
Zeroglif
Дата 14.10.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(cruelangel @  14.10.2007,  16:04 Найти цитируемый пост)
угу, а теперь, внимание, вопрос - какого лешего instanceof не создаёт этого "надобъекта"?

Ты так спрашиваешь, будто привык к обратному и очень удивился. Можно поставить вопрос иначе - какого лешего программисты не знают, как работают операторы языка, и ждут от них чего-то особенного?  А почему сделали так, как сделали - вопрос к сделавшим.  smile 

Цитата(cruelangel @  14.10.2007,  16:04 Найти цитируемый пост)
мы проверяем обладает ли какой-либо объект необходимыми методами, либо в нём они сознательно перегружены

Оператор instanceof никак не проверяет наличие методов, не выдаёт на каком уровне находится прототип, пользы от него мало, получив true от instanceof, ты можешь нарваться на метод:

a) отсутствующий в природе;
б) свой, не наследуемый;
в) наследуемый от другого прототипа в цепочке;

p.s. пост за номером 666... ещё и в адрес cruelangel... чёта волнуюсь как-то...
PM MAIL WWW   Вверх
cruelangel
Дата 14.10.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> получив true от instanceof, ты можешь нарваться на метод

всё это примеры осознанной перегрузки методов. если программист перегрузил эти методы - значит он хочет, чтобы они были перегружены. именно поэтому и применяется instanceof, а не obj1.func1==obj2.func1


> Ты так спрашиваешь, будто привык к обратному и очень удивился.

я привык к логичному и последовательному поведению. instanceof проверяет наследуются ли методы от прототипа указанной функции. для примитивных типов она нагло врёт. и не надо отмазываться, что на уровне интерпретатора это не объекты. на уровне процессора вообще никаких объектов не существует - только инструкции процессору и состояние регистров. однако мы наблюдаем, что в яваскрипте примитивные типы ведут себя как объекты. а кто выглядит как собака и лает как собака, того как обычно называют?
на всякий случай, объект - это данные к которым ассоциирован некоторый набор функций.
вот чем примитивные типы не являются - так это ХЭШЕМ (хэш - не обязательно является объектом, а объект - хэшем).

Это сообщение отредактировал(а) cruelangel - 14.10.2007, 19:26
PM MAIL   Вверх
Zeroglif
Дата 14.10.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(cruelangel @  14.10.2007,  20:13 Найти цитируемый пост)
всё это примеры осознанной перегрузки методов

По моим пунктам а) б) в) как тебе поможет instanceof, чтобы принять смелое и безошибочное решение о вызове нужного метода?

Цитата(cruelangel @  14.10.2007,  20:13 Найти цитируемый пост)
instanceof проверяет наследуются ли методы от прототипа указанной функции

Во-первых, "прототип указанной функции" здесь вообще не при чём, во-вторых, конкретная проверка того, "наследуются ли методы", не проводится, т.к. процедура и результат наследования (делегирования) зависит от наличия/отсутствия собственного свойства у объекта, а также от цепи прототипов. То есть, полученное true в результате работы instanceof совершенно не означает, что некое свойство будет обязательно унаследовано, с практической точки зрения эта информация малоинформативна. Может будет, а может нет.

Цитата(cruelangel @  14.10.2007,  20:13 Найти цитируемый пост)
и не надо отмазываться, что на уровне интерпретатора это не объекты

Гы... всё ж наоборот, на уровне интерпретатора возможно всё, спорить об этом трудно, но тут речь идёт о едином для всех, но не признаваемым тобой, стандарте языка, который описал типы и обозначил поведение и алгоритмы. Можно сказать, что таким образом стандарт "отмазывается" от фантазёров и анархистов всех мастей, плодящих свои собственные виртуальные миры и смыслы...  smile 

Цитата(cruelangel @  14.10.2007,  20:13 Найти цитируемый пост)
однако мы наблюдаем, что в яваскрипте примитивные типы ведут себя как объекты

Прям обнаблюдались, первые попавшиеся объекты:

Код

alert(0 == 0); //-> true
alert(Object(0) == Object(0)); //-> false

alert(!!0); //-> false
alert(!!Object(0)); //-> true

var x = 0; x.p = 'foo'; alert(x.p); //-> undefined
var y = Object(0); y.p = 'foo'; alert(y.p); //-> 'foo'

Представь, что вышеупомянутый нолик - это действительно полноценный объект и попробуй объяснить с использованием цитат из доков-спеков, почему же тогда поведение различно. Для чего в целой куче операций в javascript проверяется наличие объекта, если кругом одни объекты? Если считать, что конвертация в другой тип, которой в javascript полно, влечёт за собой пересмотр теории и типов, то спрашивается, как и чем объяснять такое необъектное поведение нолика. ECMAScript-то это объяснить сможет, а вот вольная ассоциация про собак-кошек уже в голову как-то не лезет.  smile  Ещё, кстати, есть такие примитивные значения, как undefined и null со своими особенностями, по твоей логике они какого типа? Недообъекты? Идея про то, что "всё в javascript объекты" может и имела бы смысл в рамках ES4 или если бы она была плодотворна, если бы с её помощью объясняли особенности делегирования, конвертации примитивного значения в объект, но обычно на этом лозунге всё и заканчивается, никто не объясняет двойственность значений, как и в каких случаях происходит конвертация, каков алгоритм, хуже того, эта философия без объяснений попадает в книжки про javascript:

Цитата

"...an object can contain a set of properties, all of which are simply references to other objects (such as strings, numbers, arrays, etc.). ..."
/John Resig, "Pro JavaScript Techniques"/

PM MAIL WWW   Вверх
fidres
Дата 19.10.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: нет
Всего: 1



и снова прошу прощение за оффтопик.

Цитата(vasac @  14.10.2007,  11:19 Найти цитируемый пост)
Аргументируйте чем вы лучше остальных.
я не лучше и не хуже. но обращаться буду так, как я хочу. к тому же "чувак" - это не "ломак", согласись.
мне, лично, не холодно и не жарко от того, что меня называют "чуваком".
это, я лично считаю, по-приятельски и не в обиду.
на что, соответственно, cruelangel и ответил, что он не в обиде.

Цитата(vasac @  14.10.2007,  11:19 Найти цитируемый пост)
Так какого же черта вы свой поток мыслей выложили здесь?
именно для того, чтоб ответить там, где была затронута суть вопроса.

и вообще. я очень не люблю когда меня начинают делать флэймером.
это унижает не только меня, но и тех людей, с кем подспудно я начинаю перепалку.
считаю, что достойные люди должны себя достойно вести, а не начинать склоку при первом же удобном случае.

если кто-то назвал вас не очень хорошим словом - первое правило хорошего тона - сделайте вид, что вы этого не заметили...
что, в общем-то, и продемонстировал cruelangel.
но кое-кто (не буду показывать пальцем) начал кричать, что, мол, оскорбили и унизили!..
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
vasac
Дата 19.10.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Но склоку начали именно вы. Даже не "чуваком", а своим ответом, после того, как вас поправили.

Цитата(fidres @  19.10.2007,  12:27 Найти цитируемый пост)
я не лучше и не хуже. но обращаться буду так, как я хочу.

Обращаться нужно так, как хочется тому, к кому вы обращаетесь, а в случае публичной дискуссии и тем, что это читает.

Цитата(fidres @  19.10.2007,  12:27 Найти цитируемый пост)
первое правило хорошего тона - сделайте вид, что вы этого не заметили...

А меня учили по другому — нужно сразу по лицу smile
Почему то, в реале мало кто решается подойти к группе незнакомых людей и сказать "эй, чуваки, подвиньтесь".

Господа модераторы, вырежьте нас куда-нибудь в мусорку.
PM WWW   Вверх
cruelangel
Дата 1.11.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



вот тут я изложил свою мысль более развёрнуто.

Это сообщение отредактировал(а) cruelangel - 1.11.2007, 09:56
PM MAIL   Вверх
vasac
Дата 1.11.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Цитата

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

Да не происходит передача объектов по ссылке. Всегда по значению. Только для объектов значение — ссылка (reference type).
Только в объект мы можем добавить свойства, а в примитив нет. 

Единственное, что мы можем сделать с переменной, содержащей примитивное значение, это заменить это самое значение.
Переменной, содержащей ссылку на объект мы так же можем заменить значение.

В этом единственном случае, где можно сравнивать передачу объектов и примитивов, результат будет одинаков для обоих случаев. Локальная переменная изменит значение и окончательно порвет "связь" с глобальной. Глобальная продолжит содержать, то что в ней было изначально.
Вне зависимости, объект передавался или примитив.
PM WWW   Вверх
cruelangel
Дата 1.11.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: 4
Всего: 8



> Да не происходит передача объектов по ссылке. Всегда по значению. 

и вообще, передача по ссылке не возможна, ибо всегда что-нибудь копируется smile

на уровне языка обычные объекты передаются по ссылке, а примитивные - по значению. как там реализовано на уровне интерпретатора - дело десятое.
PM MAIL   Вверх
vasac
Дата 2.11.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Все-таки объекты передаются по значению, которым является ссылка smile

Можно это сократить до "передаются по ссылке", но всё же это понятие достаточно устоявшееся и обычно обозначает (во всяком случае большинство это понимают так) — передачу "переменной" по ссылки, а не "значения". Т.е. мы можем внутри функции заменить значение глобальной переменной. А в JS это не так.

Впрочем, это уже спор о терминах.

Можете привести пример, где бы раскрывался глубинный смысл различия передачи в функцию примитива или reference?
А так же пример для вашей статьи, где это бы влияло при передачи примитива/объекта-над-примитивом.
PM WWW   Вверх
Astraller
Дата 19.11.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.8.2007
Где: $Украина[Кры м]->Феодосия

Репутация: 2
Всего: 5



cruelangel, тут вот встал вопрос определить число ли? Искал подходящую функцию - не нашел. Решил до смешного просто:
Код

if (val==parseInt(val)) ...



--------------------
A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1648 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.