Показать сообщение отдельно
  #28 (permalink)  
Старый 27.11.2014, 12:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Кстати, 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>
__________________
В личку только с интересными предложениями
Ответить с цитированием