$.call({$:1})
- в смысле если $ примет значение 1, то не сработает? |
Запусти да посмотри.
|
но ведь
this.$вызывает $ без явного указания this, причём тут это
$.call({$:1})
? |
Немного ошибся. Тестируем твою проверку вот так:
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);
Чет уж слишком легко ее наебать. |
ты хотел подчеркнуть, что this.$ зависит от внешнего окружения?
можешь объяснить, почему
(function(window, document) {
function $(selector) {
if (this.$){} // this.$ = undefined ???, хотя this = Window
}
}
function $(selector) {
if (this.$){} // this.$ = тело функции $; this = Window
}
и что это за функция-обёртка?
(function(window, document) {
})(window, document);
- извини, что надоел с вопросами, уже нет времени исследовать |
if(this === window) {
return new $(....);
}
|
if(this === window) и что? в обоих случаях this === windowэто true |
OlegALL, нет.
var $ = function(selector) {
alert(this === window);
if(this === window) return new $(selector);
}
$('bla');
|
уже совсем ничего не понимаю
скажите, вот это
(function(window, document) {
})(window, document);
- создаётся для задания области видимости (замыкания)? |
Ruslan_xDD, а если this - не window будет, то конструктор так и не будет вызван? Тоже проверка корявая. Че выдумывать то, а? Все уже придумано до нас.
|
| Часовой пояс GMT +3, время: 08:57. |