Показать сообщение отдельно
  #29 (permalink)  
Старый 27.11.2014, 14:48
Аспирант
Отправить личное сообщение для OlegALL Посмотреть профиль Найти все сообщения от OlegALL
 
Регистрация: 23.01.2010
Сообщений: 90

Спасибо!
Сейчас 3 вопроса:
1.
так: alert($('div').addClass('class1').html().addClass( 'class2').html()); - всё гуд

а так:
console.log($('div').addClass('class1').html().add Class('class2').html()); - выводит this ($ {tags: NodeList[3], toString: function, addClass: function, html: function})

почему?

2. Объясните смысл
if (this.$) {
	return new $(selector);
}

Здесь нужно переделать. Комментарий специалиста:
"if (this.$) - плохое решение. Лучше проверять instanceof."
Мне пока непонятно

3.
почему в клоне нет проверки
if (this.$) {
	return new $(selector);
}

И можно ли сделать наследование от $? или фактически оно и есть?

UPD.

Текущий код:
var $ = function (selector){
			this.tags = document.querySelectorAll(selector);
			if (this instanceof window.constructor) {
				return new $(selector);
			}
		}
		
		$.prototype.addClass = function(className){
			for (var i = 0; i < this.tags.length; i++){
				this.tags[i].classList.add(className);
			}
			return this;
		}

		$.prototype.html = function(){
			var clone = new $('_');
			clone.tags = this.tags;
			clone.toString = function() {
				return this.tags[0].innerHTML;
			};
			return clone;
		}


Правильно ли сделано это:
if (this instanceof window.constructor) 
{
	return new $(selector);
}

Последний раз редактировалось OlegALL, 27.11.2014 в 20:19.
Ответить с цитированием