" OF#34; -JS - 将属性设置为等于函数

时间:2013-02-06 10:28:27

标签: javascript oop

基本上,我希望“theId”等于“getId”返回的内容。但是如何?

var Quiz = {
   getId : function() {
      var params = 1;
      return params;
   },
   theId : getId(),
};

2 个答案:

答案 0 :(得分:3)

对象文字本身不能引用属性/方法,因为在评估对象文字时,对象尚不存在。你必须分两步完成这个过程:

var Quiz = {
   getId : function() {
      var params = 1;
      return params;
   }
};
Quiz.theId = Quiz.getId();

请注意,这会将theId设置为当时返回getId() ,如果你的真实世界的功能是,那么它不会以某种方式自动更新theId比您的示例更动态,并且每次调用时都可能返回不同的值。

或者,如果函数在对象之前声明,则可以同时创建两个对象属性,其中一个是对函数的引用,另一个是调用它的结果。

答案 1 :(得分:1)

有点像Self-references in object literal declarations的副本,但你可以使用简单的getter function作为你的财产:

var Quiz = {
    get theID() {
        var params = 1;
        return params;
    }
};