Кстати, html возвращает клон, и он тащится далее по цепочке. Таким образом $().html().addClass().toString() вернет html, а не [object Object]
Значит, нужно в каждом методе создавать клон. Короче, херня получается.
<div>This is <b>content</b></div>
<script>
var $ = function (selector){
this.tags = document.querySelectorAll(selector);
if (this.$) {
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;
}
var $div = $('div').addClass('class1').html().addClass('class2');
console.log($div); // нужно, чтобы работало
alert($div.html());
</script>