Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 01.12.2014, 23:03
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

$.call({$:1})
- в смысле если $ примет значение 1, то не сработает?
Ответить с цитированием
  #22 (permalink)  
Старый 01.12.2014, 23:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Запусти да посмотри.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #23 (permalink)  
Старый 02.12.2014, 00:18
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

но ведь
this.$
вызывает $ без явного указания this, причём тут это
$.call({$:1})
?
Ответить с цитированием
  #24 (permalink)  
Старый 02.12.2014, 06:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Немного ошибся. Тестируем твою проверку вот так:

function $(selector) {
	if (this.$) {
		alert('Вызван не как конструктор');
		//return new $(selector);
	} else {
		alert('Вызван как конструктор');
	}
}
$('x'); // ок
$.call({}, 'x'); // фэйл



(function(window, document) {
	function $(selector) {
		if (this.$) {
			alert('Вызван не как конструктор');
			return new $(selector);
		} else {
			alert('Вызван как конструктор');
		}
	}
	$('x'); // фэйл
})(window, document);


Чет уж слишком легко ее наебать.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #25 (permalink)  
Старый 02.12.2014, 09:15
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

ты хотел подчеркнуть, что this.$ зависит от внешнего окружения?
можешь объяснить, почему
(function(window, document) {
		function $(selector) {
                     if (this.$){}   // this.$ = undefined ???, хотя this = Window
                }
}



function $(selector) {
     if (this.$){}   // this.$ = тело функции $; this = Window
}


и что это за функция-обёртка?
(function(window, document) {
})(window, document);
- извини, что надоел с вопросами, уже нет времени исследовать

Последний раз редактировалось OlegALL, 02.12.2014 в 09:36.
Ответить с цитированием
  #26 (permalink)  
Старый 02.12.2014, 10:54
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

if(this === window) {
   return new $(....);
}
Ответить с цитированием
  #27 (permalink)  
Старый 02.12.2014, 11:02
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

if(this === window)

и что? в обоих случаях
this === window
это true
Ответить с цитированием
  #28 (permalink)  
Старый 02.12.2014, 11:15
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

OlegALL, нет.

var $ = function(selector) {
    alert(this === window);
    if(this === window) return new $(selector);
}
      
$('bla');
Ответить с цитированием
  #29 (permalink)  
Старый 02.12.2014, 11:45
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

уже совсем ничего не понимаю

скажите, вот это
(function(window, document) {
})(window, document);
- создаётся для задания области видимости (замыкания)?
Ответить с цитированием
  #30 (permalink)  
Старый 02.12.2014, 14:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ruslan_xDD, а если this - не window будет, то конструктор так и не будет вызван? Тоже проверка корявая. Че выдумывать то, а? Все уже придумано до нас.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает код Kendrick Internet Explorer 5 12.09.2012 16:14
Требуется выводить код рекламного блока Adsense из файла JavaScript??? speedflow Элементы интерфейса 0 26.05.2012 15:50
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 15:15
Как создать bodyclick код royksopp Общие вопросы Javascript 8 14.10.2011 16:39
код странно отрабатывает комбинацию клавиш ffx Общие вопросы Javascript 4 20.01.2011 10:58