Sinclair,
LCR>>Как я уже успел узнать, классы в js можно эмулировать кучей различных способов, один извращённее другого.
S>Я вот не уверен, что классы в джаваскрипт вообще нужны. Совершенно непонятно, зачем что-то эмулировать. Как правило, это всего лишь отражение дурной привычки к одному языку программирования.
В данном случае мне так удобнее.
S>Имхо, лучше изучить натуральные для JS методики программирования.
Динамическая типизация и интерпретируемость не отменяет необходимости в пользовательских типах данных, операциях над этими данными, ограничении области видимости имён и тому подобных вещах.
Натуральные...
Ты имеешь ввиду например
(function(){
for (var i; i<n; i++) {
var j;
}
})();
для того, чтобы переменные i и j не вылазили за блок?
Или например
function attach()
{
var element = document.getElementById("my-element");
element.attachEvent("onclick", function()
{
alert("Clicked: " + this.innerHTML);
}.closure(element));
}
где
closure определён как
Function.prototype.closure = function(obj)
{
// Init object storage.
if (!window.__objs)
{
window.__objs = [];
window.__funs = [];
}
// For symmetry and clarity.
var fun = this;
// Make sure the object has an id and is stored in the object store.
var objId = obj.__objId;
if (!objId)
__objs[objId = obj.__objId = __objs.length] = obj;
// Make sure the function has an id and is stored in the function store.
var funId = fun.__funId;
if (!funId)
__funs[funId = fun.__funId = __funs.length] = fun;
// Init closure storage.
if (!obj.__closures)
obj.__closures = [];
// See if we previously created a closure for this object/function pair.
var closure = obj.__closures[funId];
if (closure)
return closure;
// Clear references to keep them out of the closure scope.
obj = null;
fun = null;
// Create the closure, store in cache and return result.
return __objs[objId].__closures[funId] = function ()
{
return __funs[funId].apply(__objs[objId], arguments);
};
};
чтобы пресечь мемори лики?
Ещё вот я сейчас читаю про пространства имён в javascript. Натуральнее просто некуда.
Или чего ты имел ввиду под словосочетанием "натуральные методики"?