我在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中修复了我的代码:我仍然得到同样的错误 听起来我正在使用原型功能/方法错误,因为我无法从中调用函数?是吗?
答案 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);