我刚刚浏览了Jbox代码并浏览了以下代码片段:
// Internal functions, used to easily get values
this._getOpp = function(opp) {
return {left: 'right',
right: 'left',
top: 'bottom',
bottom: 'top',
x: 'y',
y: 'x'}[opp];
};
他似乎在互相交换价值观,但是,到底做了什么[反对]呢?这是我的问题,使用_getOpp函数的例子是 HERE 。我在JavaScript中从未见过这样的东西,任何人都可以解释一下吗?
答案 0 :(得分:3)
这是一种技术,我知道它是一个决策表(a wrote a blog post about them a while ago),但其他人可能会用不同的名称来称呼它。
它使用方括号表示法的方式与引用数组索引的方式相同:
var arr = [0, 2, 3];
return arr[1]; // return the second value in the array
因为对象属性是key
/ value
对,所以它的工作原理如下:
return {
left: 'right',
right: 'left',
top: 'bottom',
bottom: 'top',
x: 'y',
y: 'x'
}[opp]
它实际上会将字符串value
返回到key
opp
。
即。如果opp
为“正确”,则会返回“左”。
n.b。 wiki page on decision tables也值得一读
答案 1 :(得分:1)
首先使用值创建object
,然后在其键为给定attr
的对象中返回特定的opp
。如果没有建立这样的密钥,则返回undefined
。
您可以将其视为:
var states= {
left: 'right',
right: 'left',
top: 'bottom',
bottom: 'top',
x: 'y',
y: 'x'
};
return settings[opp];
该片段展示了它的行为方式。
var getOpp = function(opp) {
return {left: 'right',
right: 'left',
top: 'bottom',
bottom: 'top',
x: 'y',
y: 'x'}[opp];
};
console.log(getOpp('right'));
console.log(getOpp('oops'));