В 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, так определяем, что нужно рекурсивно вызвать эту же фунции в конструкторе с тем же аргументом.