Спасибо!
Сейчас 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);
}