Flash 验证AS3 SharedObject数据的属性是否存在

Flash 验证AS3 SharedObject数据的属性是否存在,flash,actionscript-3,cookies,shared,Flash,Actionscript 3,Cookies,Shared,如何验证SharedObject的某些属性是否存在?换句话说,我想确保我从本地的SharedObject中读到了一些有意义的东西(第一次加载swf时不应该得到任何好的东西) 我将从上找到的信息开始 假设我定义了 var my_so:SharedObject = SharedObject.getLocal("superfoo"); 现在,如果我已经在我的_so.data.foobar下得到了一些东西,我想在我的应用程序中使用它。(在此之前,myapp.myfoo已具有默认值) 这似乎在Flash

如何验证SharedObject的某些属性是否存在?换句话说,我想确保我从本地的SharedObject中读到了一些有意义的东西(第一次加载swf时不应该得到任何好的东西)

我将从上找到的信息开始

假设我定义了

var my_so:SharedObject = SharedObject.getLocal("superfoo");
现在,如果我已经在我的_so.data.foobar下得到了一些东西,我想在我的应用程序中使用它。(在此之前,myapp.myfoo已具有默认值)

这似乎在Flash 10.1上得到了解决。我错过了什么

编辑:多亏了您的帮助,问题已经解决了。:)


不过,如果能看到对SharedObject进行这种检查的惯用方法,那就太好了。我发现了很多教你如何使用SharedObject的例子,但它们似乎掩盖了一个事实,即你需要检查你是否在其中保存了任何有价值的东西。这正是第一次装载时发生的情况。另一个问题是检查一个SharedObject是否成功实例化(例如,当它被禁用时),但这将是一个完全不同的问题…

我怀疑您遇到了空与未定义的问题

我会尝试使用以下方法:

有几种方法可以确定对象是否具有特定属性,但hasOwnProperty()可能是最好的方法。

我更喜欢:

if ("foo" in someObject)
{
    // Do stuff
}

没有
my_so.data.foobar!=null
检查?可能条件代码在实例化之前执行?您是否遇到运行时错误?如果是这样,将它们包括在问题中将有助于诊断问题。它现在起作用了。:)如果我理解正确,我将undefined传递给myapp.myfoo,覆盖了我之前定义的“sane”默认值。SO的数据属性只是一个对象(请看AS3文档),因此存在性测试只使用普通方法测试对象中的属性。这非常有效!我怀疑这个问题和你说的一模一样,财产是未定义的,不是空的(我对AS3的锈蚀很明显)。除非有更好的习惯用法,否则我会接受这个答案。据我所知,这种方式与hasOwnProperty方式的主要区别在于检查原型属性,但hasOwnProperty没有。在我的情况下,这真的不重要,两种方法都有效。是的,这就是行动上的区别,而我/思考/“In”稍微快一点,因为它内置于AVM中。但主要是我更喜欢它的内容:)
if (my_so.data.hasOwnProperty("foobar")) myapp.myfoo=my_so.data.foobar;
if ("foo" in someObject)
{
    // Do stuff
}