Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2012, 05:46
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Проблемы с console.log
Не проверял в других браузерах, но в Хроме нельзя использовать console.log как обычную функцию:

1.
x = console.log; // function log() { [native code] }
x('blah'); //TypeError: Illegal invocation

2.
x = function(logger,arg){logger(arg)}
x(console.log, 5); //TypeError: Illegal invocation

3.
console.log.apply(window,[1,2,3]); //TypeError: Illegal invocation


Особенно последнее очень неприятно, когда хочешь сделать логгер:
log = function(){
   console.log.apply(window,arguments);
}


Почему так?
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности

Последний раз редактировалось FINoM, 13.02.2012 в 07:42.
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2012, 06:21
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

потому что log лежит в прототипе консолей и должен вызываться относительно инстанса консоли, чтобы знал В КАКУЮ консоль рисовать.

var q = console;
q.log('ня!')


а вообще держи)
function log(){console.log.apply(console, arguments)}

Последний раз редактировалось Mахmахmахimus, 13.02.2012 в 06:51.
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2012, 07:34
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Mахmахmахimus
function log(){console.log.apply(console, arguments)}
Хах, ловко.
Сообщение от Mахmахmахimus
потому что log лежит в прототипе консолей и должен вызываться относительно инстанса консоли, чтобы знал В КАКУЮ консоль рисовать.
console есть в window.

В общем да, с apply я неплохо так тупанул, но вот первое и второе меня сильно удивляет.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности

Последний раз редактировалось FINoM, 13.02.2012 в 07:45.
Ответить с цитированием
  #4 (permalink)  
Старый 13.02.2012, 08:05
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Не очень по теме, но почему выдает ошибку?
hasOwn = Object.prototype.hasOwnProperty.call;
o = {a:1};
hasOwn(o, 'a'); //TypeError: object is not a function
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2012, 08:08
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

По сабжу:

У Стояна работает
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #6 (permalink)  
Старый 13.02.2012, 08:11
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от FINoM
Не очень по теме, но почему выдает ошибку?
hasOwn = Object.prototype.hasOwnProperty.call;
o = {a:1};
hasOwn(o, 'a'); //TypeError: object is not a function
FINoM,
Как почему? потому что call - метод Function, а вы его вызываете в контексте window

Сообщение от FINoM
У Стояна работает
Это точно опечатка, там в начале книги есть ссылка на страницу с опечатками, может она там есть, это ж единственное первое издание?
__________________
readOnly

Последний раз редактировалось poorking, 13.02.2012 в 08:13.
Ответить с цитированием
  #7 (permalink)  
Старый 13.02.2012, 08:19
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от poorking
Как почему? потому что call - метод Function, а вы его вызываете в контексте window
Что-то я запутался. Я же копирую ссылку на функцию и вызываю её в контексте объекта.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #8 (permalink)  
Старый 13.02.2012, 08:43
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от FINoM
hasOwn = Object.prototype.hasOwnProperty.call;
Вы копируете ссылку на Function.prototype.call
__________________
readOnly
Ответить с цитированием
  #9 (permalink)  
Старый 13.02.2012, 15:01
Профессор
Посмотреть профиль Найти все сообщения от Mахmахmахimus
 
Регистрация: 10.02.2012
Сообщений: 254

Сообщение от poorking
Вы копируете ссылку на Function.prototype.call
call это функция)FINoM,
this в ВЫЗЫВАЕМОЙ функции будет самый первый слева после точки обьект, или если точки нет, то window.
call работает с this'ом пытаясь его вызвать по особому, и ожидает на его месте увидить функцию.
ты же вызываешь call() без точки , соответствено this'ом будет window.


this зависит от формы вызова)!

Последний раз редактировалось Mахmахmахimus, 13.02.2012 в 15:07.
Ответить с цитированием
  #10 (permalink)  
Старый 13.02.2012, 17:23
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

x = console.log.bind(console);
x('blah');
hasOwn = Object.prototype.hasOwnProperty.call.bind(Object.prototype.hasOwnProperty);
o = {a:1};
alert([hasOwn(o, 'a'), hasOwn(o, 'b')]);
:-)

Последний раз редактировалось B@rmaley.e><e, 13.02.2012 в 17:28.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы с отображением элементов на странице mozyr Javascript под браузер 17 13.01.2012 02:34
Проблемы с jquery fancybox В IE не загружаются картинки pav8909 Общие вопросы Javascript 3 09.09.2011 10:46
Проблемы с кодировкой в ajax Axenic Общие вопросы Javascript 3 27.07.2010 09:30
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47