13 сентября 2009, 15:17

Javascript advancent dump

Хорошо для кастомных объектов, то есть для отладки бизнес-логики, но не ДОМ.
Object.prototype.dump = function( excludePrototype, maxDepth, depth ){
    var output = [ "" ], key = "", indent = "";
    
    depth    = depth || [];
    maxDepth = maxDepth >= 0 ? maxDepth : -1;
    excludePrototype = !!excludePrototype;
    
    for( var i = 0; i < depth.length; i++ ) indent += "  ";
    if( maxDepth === -1 || depth.length < maxDepth ){
        for( key in this ) 
        	if( ( this.hasOwnProperty( key ) || excludePrototype ) ){
            if( depth.contains( this[ key ] ) ){
              output[ 0 ] = "{circular reference}";
            } else {
                depth.push( this[ key ] );
                output.push( 
                    indent + key + ": " + 
                    this[ key ].dump( excludePrototype, maxDepth, depth ) 
                );
                depth.pop( this[ key ] );
            }    
        }
    } else output[ 0 ] = "{object}";
    return output.join("\n");
};
Array.prototype.contains = function( obj ){
    for( var i = 0; i < this.length; i++ ){
        if( this[ i ] === obj ){
            return true; }
    }
    return false;
};
// default dumpster method
var defaultDumpster = function(){ return this.toString(); };
String.prototype.dump =
Number.prototype.dump =
RegExp.prototype.dump =
Boolean.prototype.dump = defaultDumpster;
Function.prototype.dump = function(){ return "{function}"; };
Date.prototype.dump = function(){ return "{" + this.getTime() + "}"; };
alert(obj.attributes.dump());

Распарсить атрибуты ДОМелемента, можна используя простой скрипт
var elm = obj.attributes;
for( var x = 0; x < elm.length; x++ ) 
	document.write(elm[x].name + ' ' + elm[x].nodeValue + '</br>');


1 комментарий РСС

SMiGL
А не лучше воспользоваться FireBug-ом для отладки! Ну а вообще лучше писать JavaScript тесты, см. Understanding JavaScript Testing
Vitaliy Bogdanets
По порядку:
  • тот доклад я читал. Он менее интересен чем доклад о новом ДжиКвери ;)
  • у меня вики синтаксис, ссылки HTML не пройдут
  • нечего мне тут спамить ;)
  • у меня тут жёсткая премодерация, комменты только по теме, слишком много спамботов валят гавна ;)
  • по теме, мне не нужно 50кб скрипт на мелочи, и не нужен ещё 50кб скрипт на тестирование, у меня случаи мелкие и кастомные, думаю можно и в 1 кб уложится ;))
  • я фоловлю Райзика и в курсе его проделок ;)))

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter