面向对象javascript:使用自我函数调用初始化属性

时间:2014-07-31 14:31:08

标签: javascript oop methods attributes initialization

我在javascript中创建了这个类:

function MyClass(id) 
{
    this.attribID = this.getID(id);

    // ==========================================================================
    this.getID = function(id) { return ("tooltip_" + id);   }
    // ==========================================================================
}

当我从我的HTML中调用它时:

<script>
var a = new MyClass("onecell");
</script>

它会生成此错误:this.getID is not a function

如何使用MyClass中定义的泛型函数初始化我的属性,该函数也可以从init之外的许多其他地方调用?

2 个答案:

答案 0 :(得分:3)

简单说明@RobG建议的内容

有两种方法可以做到。

更改作业顺序:

function MyClass(id) 
{
    this.getID = function(id) { return ("tooltip_" + id);   }
    this.attribID = this.getID(id);
}

或者使用类原型:

function MyClass(id) 
{
    this.attribID = this.getID(id);
}

MyClass.prototype.getID = function(id) { return ("tooltip_" + id); };

答案 1 :(得分:2)

只需移动this.getID函数:JSFiddle

function MyClass(id) 
{
   // ==========================================================================
   this.getID = function(id) { return ("tooltip_" + id);   }
   // ==========================================================================

   this.attribID = this.getID(id);
}