如何在'中访问名为关键字'的属性在对象?

时间:2017-11-29 13:46:26

标签: javascript jquery object

我有一个像这样的JavaScript对象的一部分:

animation:{
    "in":{
        "effect":"flipInY"
    },
    "out":{
        "effect":"bounceOut"
    },
    "typeout":{
        "shuffle":true
    },
    "minDisplayTime":"2000",
    "loop":true
}

animation是更大对象(不是简单对象)的一部分。 真正的目标是:

console.log(JSON.stringify(datas));

提供:

  

{"文本":"例如""字体":" Aclonica""大小":& #34; 50像素"" BGCOLOR":"#291C67""颜色":"#F1EC1C""对齐":"中心""动画" {"在" {"效果":" flipInY&#34 ;}"列" {"效果":" bounceOut"}" typeout" {"混洗" :真}" minDisplayTime":" 2000""环路":真}}

我想检索animation对象的值以执行其他操作。

特殊键"in"会导致问题:

var animation=datas.animation;
if (animation.in.effect) $('#result') = animation.in.effect;

错误:

  

TypeError:动画不是函数

如果我这样做:

if (animation.out.effect) $('#result') = animation.out.effect;
  

结果是:' bounceOut'

我该怎么做?我无法更改关键字"in"

****抱歉,我已经重试了测试,它现在有效..谢谢大家。有效地' in'不是一个特殊的关键字..

3 个答案:

答案 0 :(得分:0)

单词in没有问题。你必须改革你的animation对象。

var animation = {"animation": {"in":{"effect":"flipInY"},"out":{"effect":"bounceOut"},"typeout":{"shuffle":true},"minDisplayTime":"2000","loop":true}}

console.log(animation.animation.in.effect)

还有一些拼写错误和语法错误:

if(animation.in.effect) $('#result) = animation.in.effect;

应该是

if(animation.in.effect=='flipInY') {
  $('#result') = animation.in.effect;
}

答案 1 :(得分:0)

忽略拼写错误(缺少'),您无法分配函数调用的结果,所以这是错误的:

if(animation.in.effect) $('#result') = animation.in.effect;
// ----------------------------------^ can't do that

您可以将它用作您从$()获得的jQuery对象上调用的某个函数的参数,例如:

if(animation.in.effect) $('#result').someFunctionhere(animation.in.effect);

什么功能不能立即从问题中清除,但主要问题是尝试分配给函数调用。

(在2009年ES5之前,您无法在该上下文中使用in作为属性名 literal ,因为in是关键字。但是您可以从ES5开始。在非常古老的ES5之前的环境中,您需要使用animation["in"].effect代替。但不能在任何模糊的现代网络浏览器中使用。)

答案 2 :(得分:-1)

不,这是因为你输错了。

更改

animation: {...}

animation= {...}