JS原型:未捕获的类型错误未定义不是一个函数
JS prototype: uncaught typeerror undefined is not a function
我在尝试在 AngularJS 中创建工厂时遇到了麻烦。我只是将控制器中的代码移动到工厂,并进行一些更改即可正常工作。
这是我遇到的错误:
"El objeto no acepta la propiedad o el método 'addPoint'" (in IE)("对象不支持属性或方法'addPoint'")
"未捕获的类型错误:未定义不是一个函数"(在 Chrome 中)
这是我的代码:
function Shape (shape) {
this.ToolName = shape.tool;
this.LineColor = shape.lineColor;
this.LineWidth = shape.lineWidth;
this.LineCap = shape.lineCap;
this.FillStyle = shape.fillStyle;
this.isFilled = shape.filled;
this.isStroked = shape.stroked;
this.Points = [];
}
Shape.prototype.addPoint = function(point){
if(this.ToolName!=='pencil' && this.Points.length>1){
this.Points.pop();
}
this.Points.push(point);
};
这曾经在控制器内部工作,但现在在工厂内部则不工作。
谢谢。
编辑:
很抱歉我没有分享更多的代码。这里有源代码:https://github.com/michaeljota/Arheados/blob/master/app/scripts/controllers/main.js
这是控制器的代码。我想做的是将$scope无法处理的所有内容转换为工厂。有人建议使用服务,但我不太了解服务的工作原理。
再次感谢!
感谢Evan Knowles,阅读我的代码,我发现了错误。
我没有给构造函数形状,只是tmpShape = shape;
(女巫是$scope模型)。所以我只是把它修复到这个tmpShape = new Shape(shape);
它又可以工作了。
对于这样一个菜鸟问题,我真的很抱歉。
谢谢大家!
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么