在ActionScript的几个变量名中看到的uu的意义是什么?

在ActionScript的几个变量名中看到的uu的意义是什么?,actionscript,Actionscript,我是actionscript新手,我注意到actionscript中的许多变量名都以u开头,我想知道它的意义是什么?actionscript中的私有变量前面往往有一个u。在Actionscript 2.0中,变量表示它是对象的内置属性。然而,我在3.0面世之前就停止使用Actionscript了,所以据我所知,它可能会在3.0版中发生变化。您可能会看到一个新的应用程序。从语言的角度来看,这没有什么特别的意义。的确,在JavaScript中,人们用“不要碰这个值”来表示,因为控制JavaScrip

我是actionscript新手,我注意到actionscript中的许多变量名都以u开头,我想知道它的意义是什么?

actionscript中的私有变量前面往往有一个u。在Actionscript 2.0中,变量表示它是对象的内置属性。然而,我在3.0面世之前就停止使用Actionscript了,所以据我所知,它可能会在3.0版中发生变化。

您可能会看到一个新的应用程序。从语言的角度来看,这没有什么特别的意义。

的确,在JavaScript中,人们用“不要碰这个值”来表示,因为控制JavaScript中的访问级别是相当棘手的。。。让一个变量真的无法从外部获取是一件非常痛苦的事情

在ActionScript 2.0和1中,绝对没有规则…:D例如,在类
MovieClip
中,在ActionScript2.0中,您有类似
\ux
\uy
的属性。。。然而,最好的方法是
可聚焦
\u focusrect
,两个布尔值,一个决定剪辑是否可以聚焦,另一个决定它在聚焦时是否有黄色矩形

要么这真的与flash播放器内部的一些东西有关,要么只是随机的。。。请注意,有
\u global
\u root
\u accProps
,除此之外,它仅出现在
文本字段
MovieClip
按钮
的属性上

(两个下划线)表示flash播放器中的魔法<代码>\u解析
是一种非常神奇的方法。。。如果你愿意的话,
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。但同时,这在任何地方都不是很一致

现在说到ActionScript3.0,整个API不使用任何下划线。。。包括我在内的许多人选择用
$
s和
\uucode>表示
私有
受保护
内部
变量。。。但这是一个完全任意的命名约定,应该使代码可读并防止命名冲突

格里茨


back2dos

简单-{变量名}表示它是私有的

在AS3中,定义getter和setter,如

public function get myVar ():String
{
    return _myVar;
}
这最终在类外是透明的,并显示为

myclass.myvar 

因此,AS3中的getter和setter本质上看起来像是模糊属性。所以你需要一些方法来区分-所以你的隐私以“uu”开头。

这是可以写的

class Hello{
  private var x:Number;
  public function get x():Number{...}
  public function set x(value:Number):void{...}

  protected var y:Number;
  public function get y():Number{...}
  public function set y(value:Number):void{...}
}
但是每次从类或子类中访问它们时,您都需要指定您所指的是哪一个,因为它们具有相同的名称(这是可能的,因为它们位于不同的名称空间中)。这看起来像

var before:Number = private::x;
或者使用getter:

var before:Number = public::x;
对于受保护的变量,这甚至会在所有子类中继续


不喜欢下划线的人可以使用任何其他语法使名称唯一,例如c#中的getter和setter的首字母大写。

我倾向于在所有私有变量前面加上“”,即使没有getter或setter。这种方法允许我在浏览代码时,立即知道任何函数何时在操作其私有变量。这似乎是一件小事,但却很有用


除非您完全知道自己在做什么,否则不要使用受保护的变量。他们是邪恶的。使用它的唯一原因是允许子类访问超类中的变量。但是,如果受保护变量的值对超类非常重要,那么超类永远不会知道子类是否修改了它。最好将其私有化,并为子类提供一个受保护的getter和/或setter,尽管这需要做更多的工作。通过这种方式,超类可以响应任何更改值的尝试。

我认为这是一种命名约定,我想知道它的含义。@Anton这就是我包含链接的原因,这样您就可以理解命名约定的重要性。然而,从语言的角度来看,它是无关紧要的。