У меня проблемы с пониманием поведения Javascript.
Код:
function getPosition(element){
var position = {
x:$(".line div").has(element).index(),
y:$(".line").has(element).index()
};
console.log(position.y);
console.log(position)
return position;
}
Теперь, когда я вызываю его из функции, я получаю следующие результаты:
0
Object
x: 8
y: 3
Что я не понимаю, так это как можно изменить атрибуты объекта при попытке доступа к нему через ссылку на объект, но не напрямую.
Но когда я вызываю ту же функцию из консоли, я получаю следующее:
0
Object
x: 8
y: 0
Это тот же элемент, который передан функции.И кажется, что он всегда терпит неудачу, когда X или Y равен 0 (нулю), когда это другое число, это нормально.
Может кто-нибудь объяснить, что я делаю неправильно?Или это какая-то ошибка JS?О_о
РЕДАКТИРОВАТЬ:
Итак, я наконец-то выяснил, в чем проблема.Я всегда думал, что я передаю ценности, но, к сожалению, я все время ошибался.Во время некоторых поисков в stackoverflow я нашел topic о значениях JS и ссылках.
Если кому-то интересно и лень читать эту тему, вы можете посмотреть этот пример.Это в значительной степени говорит само за себя.
function test(){
var a = 5;
var b = a; //b now has value of 5
console.log("a:"+a+":b:"+b);
b = 4;//a still has value of 5 and b is assinged to 4
console.log("a:"+a+":b:"+b);
var c = {val:1};
var d = c; //d now has reference to c
d.val = 2; //c.val changes because it is a reference
console.log(c);
}
РЕДАКТИРОВАТЬ2: о, кстати, как я могу пометить мой вопрос как ответ?