What is a test case where Hasownproperty behaves differently between js and as?

Sent from my LG G3, an AT&T 4G LTE smartphone

------ Original message------
From: Josh Tynjala
Date: Sat, Jan 7, 2017 11:12 AM
To: dev@flex.apache.org;
Subject:Re: [FlexJS] value.hasOwnProperty not working, maybe a bug

I don't recall it being discouraged. I use it somewhat frequently with the
Flash runtimes. Never had a situation where it failed on me.

- Josh

On Jan 7, 2017 9:42 AM, "Alex Harui" <aha...@adobe.com> wrote:

> Also properties are made via object.de<http://object.de>fineproperty.
> that may affect hasownproperty.  I don't think there is a way around that.
> Hasownproperty was discouraged in ActionScript for similar reasons, Iirc.
>
> Sent from my LG G3, an AT&T 4G LTE smartphone
>
> ------ Original message------
> From: Carlos Rovira
> Date: Sat, Jan 7, 2017 9:21 AM
> To: dev@flex.apache.org;
> Subject:Re: [FlexJS] value.hasOwnProperty not working, maybe a bug
>
> Hi Josh,
>
> many thanks, your workaround works, but it's a shame that "hasOwnProperty"
> can't be used and does not be reliable :(
>
> Thanks!
>
> :)
>
>
>
> 2017-01-07 17:28 GMT+01:00 Josh Tynjala <joshtynj...@gmail.com>:
>
> > Are you testing a release build? Remember that Closure compiler renames
> > member variables, so using a string to check if they exist won't work.
> >
> > It can be frustrating, I know. To this day, I still wish that this
> drastic
> > renaming with Closure hadn't been the default we chose. It breaks a
> number
> > of common things like this.
> >
> > You may be able to do something like this instead, I think:
> >
> > If(value.label !== undefined)
> >
> > JavaScript generally won't throw an error when you try to access a
> property
> > that doesn't exist because all JS objects are dynamic by default.
> >
> > - Josh
> >
> > On Jan 7, 2017 5:02 AM, "Carlos Rovira" <carlosrov...@apache.org> wrote:
> >
> > > Hi,
> > >
> > > I have this code in a Item Renderer:
> > >
> > > override public function set data(value:Object):void
> > > {
> > > super.data = value;
> > >
> > > if(value == null) return;
> > >
> > > /*if(value.hasOwnProperty('label')) {
> > >                 label = String(value.label);
> > > } else {
> > > label = String(value);
> > > }*/
> > > label = String(value.label);
> > >
> > >             /*if(value.hasOwnProperty('href')) {
> > >                 href = String(value.href);
> > > }*/
> > >             href = String(value.href);
> > >
> > > COMPILE::JS
> > > {
> > > if(textNode != null)
> > > {
> > > textNode.nodeValue = label;
> > > }
> > > }
> > > }
> > >
> > > The commented code is not working. So I committed the line just below
> to
> > > get it working for now.
> > >
> > > I'm passing typed object in the dataProvider :
> > >
> > > package vos
> > > {
> > >     public class NavigationLinkVO
> > >     {
> > >         [Bindable]
> > >         public var label:String;
> > >         [Bindable]
> > >         public var href:String;
> > >
> > >         public function NavigationLinkVO(label:String, href:String)
> > >         {
> > >             this.label = label;
> > >             this.href = href;
> > >         }
> > >     }
> > > }
> > >
> > > And the dataProvider is:
> > >
> > > private var _mainNavigation:Array = [
> > >                 new NavigationLinkVO("About", "
> > > https://getmdl.io/index.html
> > > "),
> > >                 new NavigationLinkVO("Getting Started", "
> > > https://getmdl.io/started/index.html";),
> > >                 new NavigationLinkVO("Components", "
> > > https://getmdl.io/components/index.html";),
> > >                 new NavigationLinkVO("Customize", "
> > > https://getmdl.io/customize/index.html";)
> > >         ];
> > >
> > > So, "label" and "href" are properties in the object, so why
> > > "hasOwnProperty" is not working? is a bug?
> > >
> > > Thanks
> > >
> > > --
> > > Carlos Rovira
> > > http://about.me/carlosrovira
> > >
> >
>
>
>
> --
>
> Carlos Rovira
> Director General
> M: +34 607 22 60 05
> http://www.codeoscopic.com
> http://www.avant2.es
>
> Este mensaje se dirige exclusivamente a su destinatario y puede contener
> información privilegiada o confidencial. Si ha recibido este mensaje por
> error, le rogamos que nos lo comunique inmediatamente por esta misma vía y
> proceda a su destrucción.
>
> De la vigente Ley Orgánica de Protección de Datos (15/1999), le comunicamos
> que sus datos forman parte de un fichero cuyo responsable es CODEOSCOPIC
> S.A. La finalidad de dicho tratamiento es facilitar la prestación del
> servicio o información solicitados, teniendo usted derecho de acceso,
> rectificación, cancelación y oposición de sus datos dirigiéndose a nuestras
> oficinas c/ Paseo de la Habana 9-11, 28036, Madrid con la documentación
> necesaria.
>

Reply via email to