0

我在 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:对象不支持属性或方法“genValues”

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

更新!

我在下面的小提琴中修复了我的代码:我仍然得到同样的错误。
听起来我错误地使用了原型功能/方法,因为我无法从其中调用函数?是对的吗?

4

1 回答 1

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);
于 2013-07-30T12:53:17.933 回答