有人可以解释一下这个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
}
}
答案 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();