属性未定义

时间:2014-07-04 10:43:36

标签: javascript jquery

我有这段代码:

var my = {    
  vars: {
    name: 'mojo'
  },

  secondLevel: {
    vars: {
      name: my.vars.name
    }
  },
};

$("#myDiv").text(my.vars.name);

fiddle

我收到此错误:

Uncaught TypeError: Cannot read property 'vars' of undefined 

为什么我无法设置name: my.vars.name

3 个答案:

答案 0 :(得分:3)

您正在访问尚未创建的变量。将{}视为Object的构造函数,因此您尝试使用尚未创建的对象。你可以这样写:

var my = {    
  vars: {
    name: 'mojo'
  },
  secondLevel: {
    vars: {}
  }
};

my.secondLevel.vars.name = my.vars.name;

$("#myDiv").text(my.vars.name);

顺便说一句,为什么你想要那个"第二级"事?

答案 1 :(得分:0)

<强> Fiddle

您不能在名称中使用.

但如果您确实希望它能够发挥作用,那么您也可以采用错误的方式。

应该是这样的:

var my = {    
    vars: {
        name: 'mojo'
    },

    secondLevel: {
        vars: {
            name: my_vars_name
        }
    },
};

 $("#myDiv").text(my_vars_name);

答案 2 :(得分:0)

实际上,当js遇到你的定义时,你最初会遇到另一个错误。

var my = {    
    vars: {
        name: 'mojo'
    },

    secondLevel: {
        vars: {
            name: my.vars.name//This is wrong. Use this.vars.name
        }
    },
};
  

TypeError:我未定义

你没有注意到这个错误。您无法在我的声明中引用my

因为这个原因我未定义,所以你不能引用它。

使用this代替我的

name:this.vars.name