【问题标题】:What is bracket syntax?什么是括号语法?
【发布时间】:2013-07-20 06:52:25
【问题描述】:

什么是括号语法,它与点语法有何不同?使用括号语法而不是点语法有什么好处吗?你能给我举个例子吗?我是使用 ActionScript 3.0 编程的新手,无法理解括号语法的工作原理。

感谢您的帮助!

【问题讨论】:

标签: actionscript-3 apache-flex syntax square-bracket


【解决方案1】:

使用括号语法比点语法有什么好处吗?

当然有:

object["foo.bar"] // refers to foo.bar property of object
object.foo.bar // refers to bar property of foo which is a property of object

要使用. 解析任何对象的此类属性,您需要使用方括号表示法,因为点表示法会以其他方式解释它。

另一个区别是查找时间。如果您使用点语法,编译器将在编译时知道您正在访问该对象的属性。如果使用方括号语法,则属性的实际查找是在运行时完成的。因此:

object[someKey] // the runtime value of someKey will be used to get a property
object.someKey // resolves to someKey property of an object.

最后,点表示法比括号表示法

【讨论】:

  • object["foo.bar"] // 引用对象的 foo.bar 属性 object.foo.bar // 引用 foo 的 bar 属性,它是对象的属性
  • 我看到它们之间存在差异,但实际上有什么不同? foo.bar 是一个属性吗?
  • 就像将对象的属性命名为foo.bar 一样object["foo.bar"] = somevalue;
  • 所以,trace(foo.bar); 会追踪 .bar 是什么,而 trace(object["foo.bar"]); 实际上会追踪“somevalue”?
  • 应该注意的是,任何实际的时间差异都是微乎其微的,在微秒范围内。除非您大量执行它们(数十万,甚至数百万),否则您不太可能注意到丢帧或任何东西。因此,出于执行时间的原因,真的不值得担心。
【解决方案2】:

对于 AS3 中的对象,如果您想使用字符串或字符串变量来引用对象上的某些属性,则可以使用方括号而不是点语法。

例如

var myObj:Object = {someProperty:"Some Value"};

trace(myObj['someProperty']); //Outputs: Some Value
trace(myObj.someProperty); //Outputs: Some Value

var myProperty:String = "someProperty";
trace(myObj[myProperty]); //Outputs: Some Value

for(var property in myObj)
{
    trace(myObj[property]); //trace out each properties value of myObj
}

【讨论】:

    猜你喜欢
    • 2012-03-22
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2014-08-20
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多