不明白这个javascript函数语法

时间:2013-04-14 11:47:49

标签: javascript

有人可以解释一下这个javascript语法。

n:{}是什么意思?

这是否意味着AVSetFocus返回一个nobject(已经给出了临时名称n,它由'fields't,f和a。t组成一个对象(看起来像),f是对象的一个​​函数t,a是一个数组?

因此AVSetFocus返回一个对象,一个函数和一个数组。这个函数实际上是否调用了SetFocusToField?

这种风格叫什么?

有点困惑。

function AVSetFocus(d, b) {
    return {
        n: {
            t: FocusMgr,
            f: FocusMgr.SetFocusToField,
            a: [d, b]
        }
    }
}

刚刚发现了这个:

var FocusMgr;

function FocusMgr_Init() {
    FocusMgr = new function () {
        this.mCurFocusID = 0;
        this.mCurFocusWindowID = 0;
        this.mCurFocusElement = null;
        this.mOpenedWindow = false;
        this.mFocusStk = [];
        //etc
    }
}

2 个答案:

答案 0 :(得分:2)

AvSetFocus()函数返回此对象:

{
    n: {
        t: FocusMgr,
        f: FocusMgr.SetFocusToField,
        a: [d, b]
    }
}

该对象有一个属性"n",它本身引用另一个对象:

    {
        t: FocusMgr,
        f: FocusMgr.SetFocusToField,
        a: [d, b]
    }

......这又有三个属性。 "t"指的是(可能)另一个对象,"f"指的是同一个对象"t"所引用的方法,这似乎有点多余,因为您可以通过""t访问该对象,"a"最终引用作为参数传递给AvSetFocus()的两个值的数组。

  

"此功能是否实际调用SetFocusToField?"

不,它没有。你可以使用它:

var avsf = AvSetFocus(x, y);
avsf.n.f();  // calls FocusMgr.SetFocusToField()

或者你可以这样做:

AvSetFocus(x, y).n.f();

至于您传递给AvSetFocus()的参数应该是什么,我不知道 - 从显示的代码中无法辨别。

答案 1 :(得分:0)

  

这是否意味着AVSetFocus返回一个nobject(已经给出了)   临时名称n,由'fields't,f和a组成。 t是一个   对象(看起来像),f是对象t的函数,a是   阵列

{}是对象文字符号。它创建了一个新对象。所以是的,你是对的。

f变量只是对方法的引用,但不会执行。

您可以通过执行n.f();

来调用该功能