what about

o.constructor.prototype == c.prototype

On Apr 18, P T Withington wrote:

> o.__proto__ == c.prototype
> 
> is usually equivalent to:
> 
> o instanceof c
> 
> except in the case where you are trying to see if o is a _direct_ instance of
> c.  But that does not seem to be the case here.
> 
> I cannot find a way in ECMA to ask if something is a direct instance of a
> class.  both instanceof and isPrototypeOf test for direct and indirect
> inheritance.
> 
> On 2006-04-18, at 11:27 EDT, Henry Minsky wrote:
> 
> > This code in LzDataElement tries to classify an object arg, o, by looking at
> > it's __proto__ field.
> > Do we have  protocol for finding object's class type that doesn't rely on
> > __proto__ (which won't work
> > in IE 6 javascript, I believe)
> > 
> > 
> > 
> > LzDataElement.__LZv2E = function ( o ) {
> > 
> >    var type = typeof( o );
> >    type.toLowerCase();
> > 
> >    var c = [];
> >    if (type == "object") {
> >        var proto = o.__proto__;
> >        if ( proto == LzDataElement.prototype ||
> >             proto == LzDataNode.prototype ) {
> >            c[0] = o;
> >        } else if (proto == Date.prototype) {
> > 
> >            type = "date";
> >            // FIXME: [2004-04-10 pkang] what should we do with dates?
> > 
> >        } else if (proto == Array.prototype) {
> >            type = "array";
> >            var tag = (o.__LZtag != null ? o.__LZtag : 'item');
> >            for (var i=0; i < o.length; i++) {
> >                var tmpC = this.__LZv2E( o[i] );
> >                c[i] = new LzDataElement(tag, null, tmpC );
> >            }
> >        } else {
> >            type = "struct";
> >            var i = 0;
> >            for (var k in o) {
> >                // skip any properties that start with __LZ
> >                if (k.indexOf('__LZ') == 0) continue;
> >                c[i++] = new LzDataElement(k, null, this.__LZv2E(o[k]));
> >            }
> >        }
> >    } else if (o != null) {
> >        c[0] = new LzDataText( o );
> >    }
> > 
> >    if (c.length == 0) c = null;
> > 
> >    return c;
> > }
> > 
> > --
> > Henry Minsky
> > Software Architect
> > [EMAIL PROTECTED]
> 
_______________________________________________
Laszlo-dev mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-dev

Reply via email to