未捕获的TypeError:对象[object Object]的属性'dist2'不是函数

时间:2013-10-20 03:52:04

标签: javascript jquery

我有这个函数应该返回从点p到段线v-w的距离。 我遇到的问题是在一段时间后我收到以下错误: 未捕获的TypeError:对象[object Object]的属性'dist2'不是函数。

我直接在distToSegmentSquared中接收它,甚至没有调用函数dist2()。在jquery中的任何地方是否有任何其他dist2()我找不到。

代码:

function sqr(x) {
    return x * x;
}

function dist2(v, w) {
    console.log(v);
    console.log(w);
    return sqr(v.x - w.x) + sqr(v.y - w.y);
}

function distToSegmentSquared(p, v, w) {
    var l2 = dist2(v, w);
    if (l2 == 0)
        return dist2(p, v);
    var t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;
    if (t < 0)
        return dist2(p, v);
    if (t > 1)
        return dist2(p, w);
    return dist2(p, {x: v.x + t * (w.x - v.x),
        y: v.y + t * (w.y - v.y)});
}

function distToSegment(p, v, w) {
    return Math.sqrt(distToSegmentSquared(p, v, w));
}

该错误的值是:

p: Object
x: 461
y: 333

v: Object
x: 80
y: 120

w: Object
x: 260
y: 120

2 个答案:

答案 0 :(得分:0)

我怀疑您的错误源于JavaScript没有 sqr 功能。我加了一个

function sqr(v){return Math.pow(v,2);}

并写了这个fiddle。一切都是笨拙的。

答案 1 :(得分:0)

我在jsfiddle中尝试了你的代码,我找不到任何错误:fiddle

 var result=distToSegment(
            {x:10,y:2}, {x:5,y:2}, {x:9,y:10}
            );