2013-05-07 5 views
-2

У меня есть эта функция, которая является свойством объекта,Функция Javascript всегда возвращает true?

Layer.prototype.mouseInBounds = function() { 

    // Return value 
    var ret = true; 
    // Layer mouse co-ordinates are not valid 
    if (this.mouse.x < 0 || this.mouse.y < 0 || this.mouse.x >= this.width || this.mouse.y >= this.height) { 
     // Set layer mouse co-ordinates to false 
     this.mouse.x = false; 
     this.mouse.y = false; 
     // Set return value 
     ret = false; 
    } 
    return ret; 
}; 

Но когда я называю это как так из другого объекта, который имеет слой, как свойство,

this.layer.mouseInBounds() // true 

Независимо от того, значение ret внутри функции mouseInBounds?

EDIT

Чтобы лучше понять, что мой вопрос mouse является свойством слоя, а при добавлении

console.log(ret); 

Незадолго до возвращения заявления я действительно получить либо true или false,

+0

Что такое 'this' (' Layer')? Что такое 'this.mouse'? Вы пытались проверить значения '.x' и' .y', чтобы убедиться, что они верны? –

+1

Вы отлаживали этот код? –

+0

Здесь вам понадобится больше контекста. – epascarello

ответ

1

Он всегда возвращает true, потому что:

  • this.mouse.x < 0 всегда false и

  • this.mouse.y < 0 всегда false и

  • this.mouse.x >= this.width всегда false и

  • this.mouse.y >= this.height всегда false

Я не знаю, что именно представляют mouse.x и mouse.y, но если они - координаты мыши x/y, измеренные в верхнем левом углу окна, то я не знаю, как они могут быть меньше 0.

Смежные вопросы