Я просто пытался узнать и понять исходный код jQuery (пока с небольшим успехом X_X), чтобы улучшить свои навыки JavaScript. По мере того как я понимаю увеличение JavaScript, я придумал этот небольшой инструмент для ведения журнала/отладки. По состоянию на мой уровень JavaScript я размещаю здесь код для оценки и аудита. Поэтому я могу извлечь уроки из сделанных комментариев. Может ли кто-нибудь указать на потенциальные проблемы, улучшения? Я попытался инкапсулировать реализацию консоли и сопоставить ее с окном. $ Console (единственное место, которое вмешивается в глобальную область).Изучая JavaSCript при попытке улучшить этот инструмент, пожалуйста, прокомментируйте этот простой инструмент ведения журнала JavaScript.
(function() {
var proxy = {}, //use private proxy object to prevent binding to global (window) object
_id = "",
_warning = false;
results = {};
if (this.$console) { //check if $console exists in global (window)
warning("$console is conflicting with existing object and could not be mapped.");
}
else {
this.$console = proxy; //if undefined we then map proxy to global (window) object
}
proxy.init = function(id) { //map the display ol html element on the page
_id = id;
results = document.getElementById(id);
return this;
}
proxy.log = function(msg) {
append(msg);
return this;
};
proxy.assert = function(pass, msg) {
var html = (pass) ? "<b style=\"color: green;\">Pass</b>, " + msg
: "<b style=\"color: red;\">Fail</b>, " + msg ;
append(html);
return this;
}
proxy.error = function(msg) {
var html = "<b style=\"color: red;\">Error</b>, " + msg + "";
append(html);
return this;
}
function append(msg) {
if (results != null) {
results.appendChild(getChild("li", msg));
}
else {
warning("Message could not be appended to element with \"Id: " + _id + "\".");
}
return this;
};
function getChild(type, html) {
var child = document.createElement(type);
child.innerHTML = html;
return child;
}
function warning(msg) {
if (!_warning) {
_warning = true;
alert(msg);
}
}
return proxy;
}());
Использование
$console.init("console").log("hello world");
$console.assert(true, "This is a pass.");
пс: Как я сделал несколько изменений к коду вопрос довольно сильно отличается от того, что он был изначально.
Какие браузеры? Из NS4 +? Мобильные телефоны? –
Мне просто нужна оценка кода, потому что я не так хорошо разбираюсь в JavaScript. – Jeff
Ближе всего я могу найти, чтобы обратиться к вашей строке 'innerHTML + =': http://stackoverflow.com/questions/1387433/fastest-way-to-append-html-content-to-a-div-using-javascript/1387475 # 1387475 –