Как реализовать вот такую запись function1().function1(); ?

Рейтинг: 0Ответов: 1Опубликовано: 15.01.2015

Как реализовать такую запись? Скажем, есть функция, коротая возвращает элемент:

 var $ = function (id) {
    if (id[0] == '#') {
      id = id.slice(1);
    }
    return document.getElementById (id);
  };

А есть функция, которая что-то делает с этим элементом:

var function bg (elem, color) {

elem.style.backgroundColor = color;
};

Используются они вот так:

bg($("id"), "цвет");

Как изменить эти функции, чтобы они работали, как в jquery:

$("id").bg("цвет");

Ещё хотелось бы знать, как сделать возможность писать изменение цвета много раз на один и тот же элемент:

$("id").bg("цвет1").bg("цвет2").bg("цвет3") ...;

Ответы

▲ 1
var MyObj = function(obj) {
    this.obj = obj;
};

MyObj.prototype.bg = function (color) {
         var id = this.obj;
         if (id[0] == '#') {
           id = id.slice(1);
         }
         var a = document.getElementById(id);
          a.innerText = color;
          return this;
};

var $ = function (id) {

    return new MyObj(id);
};

$('#test').bg('0xFF0000').bg('green');

html:

<p id="test">test</p>

ссылка

Дальше дорабатывайте по вашим требованиям.