这个JavaScript对象数组表达式{} []是什么意思?

时间:2016-02-25 09:19:57

标签: javascript

我正在尝试理解我在Masonry中找到(并实际使用)的以下JavaScript代码:

var docElem = document.documentElement;
var transitionProp = typeof docElem.style.transition == 'string' ?
    'transition' : 'WebkitTransition';
var transitionEndEvent = {
  WebkitTransition: 'webkitTransitionEnd',
  transition: 'transitionend'
}[ transitionProp ];

表达式{} []是否意味着,transitionProp变量被添加到transitionEndEvent对象中? 而且,docElem.style.transition的Expression类型是否可以找出是否支持css转换?

感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

它正在返回该对象的特定元素。

例如:

var obj = { key: 'value' };
var val = obj['key']);

可缩短为:

var val = { key: 'value' }['key'];

(显然在这种情况下它没有意义,但它说明了正在发生的事情。)

答案 1 :(得分:0)

最初的两行,

var docElem = document.documentElement;
var transitionProp = typeof docElem.style.transition == 'string' ?
    'transition' : 'WebkitTransition';

会将值transitionWebkitTransition分配给transitionProp

然后您创建一个对象并使用[transitionProp],它更像transitionProp['transition'/'WebkitTransition']的值。

var transitionEndEventObj = {
  WebkitTransition: 'webkitTransitionEnd',
  transition: 'transitionend'
};
var transitionEndEvent = transitionEndEventObj[ transitionProp ];

在其他方面,它看起来像这样

var transitionEndEvent = transitionEndEventObj[ 'transition'];

var transitionEndEvent = transitionEndEventObj['WebkitTransition'];

答案 2 :(得分:0)

此处transitionEndEvent将包含:

'webkitTransitionEnd'如果transitionProp == 'WebkitTransition'

如果'transitionend'

,请

transitionProp == 'transition'

答案 3 :(得分:0)

要向JSON添加一些属性,我们使用

object["property"] = value;

因此编写代码中的上述行以从对象访问属性名称transitionProp。

因此变量transitionEndEvent将保存transitionProp属性的值。

var transitionEndEvent = {
  WebkitTransition: 'webkitTransitionEnd',
  transition: 'transitionend'
}[ transitionProp ];