JS Object Literals - 如何从对象外部访问?

时间:2015-04-10 14:28:41

标签: javascript object undefined object-literal

我是JavaScript新手,从外面访问对象时遇到麻烦。 在我想访问此对象的属性之前,我的方法用对象填充数组。

Reservation = {
   objArr: [],                     // stores CalendarDates objects
   dates: ["test", "foo", "bar"],  // some test strings

   actionMethod: function() {
      Reservation.objArr[0] = new Reservation.CalendarDate.construct(Reservation.dates[0]);
      alert(Reservation.dates[0].testVariable);        // returns 'undefined'
   }
};

Reservation.CalendarDate = {
   testVariable: '',
   construct: function(testVariable) {
      Reservation.CalendarDate.testVariable = testVariable;
   }
};

如何从对象外部访问属性(testVariable),该对象存储在数组中。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我认为你正试图在这些方面取得成就......

    var Reservation = {
       objArr: [],                     // stores CalendarDates objects
       dates: ["test", "foo", "bar"],  // some test strings

       actionMethod: function() {
         var temp = new Reservation.CalendarDate(Reservation.dates[0]);
          Reservation.objArr[0] = temp;
          alert(Reservation.objArr[0].testVariable);
       }
      };

      Reservation.CalendarDate = function(testVariable) {
         this.testVariable = testVariable;
      };

      Reservation.actionMethod();

答案 1 :(得分:1)

我不确定你想要完成什么,但这会做你想要的:

Reservation = {
  objArr: [], // stores CalendarDates objects
  dates: ["test", "foo", "bar"], // some test strings

  actionMethod: function() {
    this.objArr[0] = new this.CalendarDate.construct(this.dates[0]);
    alert(this.objArr[0].testVariable); // returns 'test'
  },

  CalendarDate: {
    testVariable: '',
    construct: function(testVariable) {
      this.testVariable = testVariable;
    }
  }
};

那就是说,如果你试图模仿Javascript中的课程(我不会为你不应该开始制作一个火焰战争),你应该阅读其中许多好文章/书籍中的一篇。 Getify's free book对此主题有一些很好的信息。