从原型函数调用函数

时间:2013-07-30 04:28:14

标签: javascript

我在javascript中有一个原型函数...我希望能够从该原型函数中调用另一个函数。

var objMap = new Map(500,500);
var myCities = objMap.genValues(5);

function Map(sizeX, sizeY) {
    this.sizeX = sizeX;
    this.sizeY = sizeY;
}
Map.prototype = {
    genValues: function (number) {
        validateValues(number);
    }
}

function validateValues(num){
    alert(num);
}

在我的控制台中,我收到以下错误:

  

SCRIPT438:Object不支持属性或方法'genValues'

当我没有将函数调用添加到validateValues时,我没有收到错误。 有没有办法做到这一点?我希望能够以递归方式调用函数。

更新<!/强>

我在以下fiddle中修复了我的代码:我仍然得到同样的错误 听起来我正在使用原型功能/方法错误,因为我无法从中调用函数?是吗?

1 个答案:

答案 0 :(得分:1)

在分配原型之前,您正在构建Map实例;并且在创建方法之前调用该方法。在该赋值之后实例化的对象将具有genValues方法。两个修复:

function validateValues(num){
    alert(num);
}

function Map(sizeX, sizeY) {
    this.sizeX = sizeX;
    this.sizeY = sizeY;
}
// alter the existing prototype object instead of overwriting it
Map.prototype.genValues = function (number) {
    validateValues(number);
}

// create instances only after the "class" declaration is done!
var objMap = new Map(500,500);
var myCities = objMap.genValues(5);