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. >