Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Кросс-браузерные функции (https://javascript.ru/forum/project/3754-kross-brauzernye-funkcii.html)

x-yuri 23.05.2009 20:40

Цитата:

Есть еще standards mode? Я встречался с тремя вариантами
я имел в виду Standards-compliant mode или Strict mode, т.е. CSS1Compat

e1f 24.05.2009 04:58

Zeroglif, Все так, как и должно быть, вот только это, выходит, работает не совсем так, как надо:
var $ = function(elem/* id */) {
    return typeof elem == 'string' ? $d.getElementById(elem) : elem;
};

Видимо, нужно использовать что-то вроде
(elem!=null) && elem.constructor==String

Zeroglif 24.05.2009 11:10

Цитата:

Сообщение от e1f
работает не совсем так, как надо

Зачем передавать в эту функцию объект "подтипа" String?

e1f 24.05.2009 11:55

Затем, что это строка. У нее есть все методы, которые есть у строки

Zeroglif 24.05.2009 14:21

Цитата:

Сообщение от e1f
Затем, что это строка. У нее есть все методы, которые есть у строки

Это не строка, а объект (тип Object, "объектный подтип" String). Различайте примитивные значения от объекта. У первых нет методов пока не произойдёт конвертация из типа в тип. Зачем вместо строки отправлять в функцию объект - непонятно.

e1f 24.05.2009 16:21

"test".substr(1)

Методы есть. Или они все-же появлись после приведения типа? Я к тому, что в функцию можно передать строку и так:
function some_func(str){}
...
some_func(String(var1))

Zeroglif 24.05.2009 16:42

Цитата:

Сообщение от e1f
"test".substr(1)

Обращение к свойству (и ещё пара операций) инициирует создание одноразового объекта в рамках конвертации примитивного значения в объект. Объект позволит обратиться к прототипу и т.д. Это не означает, что примитивные значения можно считать объектами или что у примитивных значений есть свойства, это обычное движение из типа в тип, только его не видно...
Цитата:

Сообщение от e1f
some_func(String(var1))

Есть разница между 'String()' и 'new String()', первое - это вызов функции и конвертация в строку, второе - это вызов конструктора и создание объекта. Оператор 'typeof' будет работать как должен:
var s = 'text';
alert( [ typeof ( s ), typeof String( s ), typeof ( new String( s ) ) ] ); // string,string,object

x-yuri 24.05.2009 23:03

Zeroglif, ты лучше скажи как размеры клиентской области определеить ;)

Riim 27.05.2009 09:44

Что-то B~Vladi на сайте появляться перестал :( . Расстроился наверно сильно. Я тут перечитал все и сам себя не узнал. Прям как с цепи сорвался, подумаешь пара мелких недочетов. На эмоциях немного получилось.
B~Vladi, если будешь читать, то извини если что не так. Нормальные у тебя функции. И те, что тип определяют, тоже имеют право быть. Я иногда в разных фреймворках встречаю такие.
Небольшой совет:
В следующий раз, когда будешь предлагать что-то подобное, вместо:
Цитата:

Вот такие у меня супер-мега-функции. Они самые лучшие и все ими должны срочно пользоваться.
напиши лучше:
Цитата:

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

B~Vladi 27.05.2009 09:56

OK, Riim, учту...


Часовой пояс GMT +3, время: 15:05.