2014-11-13 2 views
-1

У меня есть следующие IFFE, что создает объект контекста на первый вызов в качествеJavascript запрос о контексте объекты

$_(document) 

Результата: OBJ {контекста: документ}

Однако на втором вызове Im получает сообщение об ошибка в

$_(document) 

Uncaught ошибка типа: объект не является функцией

Как кто-то, кто только знакомится с основными понятиями я хочу знать причину такого поведения

$_ = (function(){ 

    var obj = function (context){ 
     this.context = context 
    } 

    return function(context){ 
     return new obj(context) 
    } 
}()) 
+0

Я запустил над кодом в хром-консоли. Я думаю, что фигурные скобки хороши – user3711096

+0

Для начала, 'obj = ...' должен быть 'var obj = ...' - в противном случае нет смысла использовать IIFE, если он будет в глобальном. – jfriend00

+0

Я не могу воспроизвести ваш TypeError. –

ответ

-1

хорошо, что мы делаем здесь. для возврата функции. с IFFE typeof $_ равно «функции», и когда мы отправляем контекст как параметр, он строит объект с ключевым словом new и возвращает объект, поэтому он показывает объект со ссылкой на объектный документ