JS连接对象属性值(数字)而不是添加

时间:2014-11-15 04:37:20

标签: javascript

在交叉函数中,检查画布上是否有两个对象相交,我需要添加obj.x和obj.width属性来获取obj.right(side)。不知何故,属性是连接而不是添加。它可能与引用类型有关,但我不知道如何捕获原始类型中的值。

function intersects(obj1, obj2) { // checks if 2 shapes intersect
    var ob2x = obj2.x;
    var ob2width = obj2.width;
    if (obj1.x > +obj2.x + 70 || obj2.x > +obj1.x + 70) {
        console.log('false : obj1.x=' + obj1.x + '     obj2.right=' + parseInt(ob2x) + parseInt(ob2width));
        return false;
    }

    if (obj1.y > +obj2.y + +obj2.height || obj2.y > +obj1.y + +obj1.height) {
        console.log('false');
        return false;
    }

    console.log('false');
    return true;
}

我已经尝试过获取object属性的数值,如您所见。没有工作

还尝试了parseInt(),它没有用。

我想我可以将值单独作为参数添加到函数中,但我希望尽可能缩短它,因为孩子们需要使用它。

1 个答案:

答案 0 :(得分:0)

您需要添加分组运算符:

 ... + (parseInt(ob2x) + parseInt(ob2width)) + ... 

隔离表达式的那一部分,以便+被视为添加。否则,完整表达式将其保持为连接,即使您将这些值转换为数字(因为如果字符串在要计算的表达式中的任何位置,+表示连接)。

E.g。

var x = 5;
var y = 6;

console.log('Sum: ' + x + y);   // 56

console.log('Sum: ' + (x + y)); // 11