Показать сообщение отдельно
  #19 (permalink)  
Старый 11.08.2009, 03:39
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

В js-core, вместо второй функции, рекурсия добавлена, пример будет выглядеть следующим образом:

function dom(arg) {
   if(this.dom) return new dom(typeof arg == "string" ? document.getElementById(arg) : arg);
   this.node = arg;
}
 
dom.prototype = {
   append: function(arg) { 
      return new dom(this.node.appendChild(typeof arg == "string" ? document.createElement(arg) : arg));
   },
   text: function(str) {
      if(typeof str == "undefined") return this.node.innerText || this.node.textContent;
      this.node.innerHTML = "";
      this.node.appendChild(document.createTextNode(str));
      return this;
   }
};

dom(document.body).append("h1").text("It works!");


Используется тот факт, что одна и таже функция может вызываться явным образом и в конструкторе. При вызове явным образом this указывает на window, так определяем, что нужно рекурсивно вызвать эту же фунции в конструкторе с тем же аргументом.

Последний раз редактировалось Octane, 13.03.2010 в 21:32. Причина: исправил имена переменных
Ответить с цитированием