2016-11-01 10 views
0

Я видел этот код в учебнике, и я не знаю, что происходит в методе unshift. Я понимаю, что .unshift() делает в js, но я не понимаю, что делает этот синтаксис, в частности тот факт, что он написан как x: x и y: y.Что означает синтаксис JavaScript в отношении .unshift()?

insert: function(x, y) { 
     this._queue.unshift({x:x, y:y}); // unshift prepends an element to array 
     this.last = this._queue[0]; 
    }, 
+0

_queue представляет собой массив х и у coordinatse. например, '_queue = [{x: 10, y: 20}, {x: 11, y: 30}];' это помогает? x и y являются переменными – Clay

+0

да, спасибо за разъяснение –

+0

это неперемещение объекта, который имеет два ключа, x и y, значения которых являются значениями аргументов функции, x и y - note, ES2015 (или 2016, никогда не уверены) стенография будет 'this._queue.unshift ({x, y});' –

ответ

2

Unshifting an element to an array просто вставляет этот элемент в переднюю часть массива.

Здесь у нас есть массив под названием _queue, в который мы вставляем {x:x, y:y} спереди.

Так, если очередь смотрел что-то вроде этого:

_queue: [ 
    {x:1, y:1}, 
    {x:2, y:2}, 
    {x:3, y:3}, 
    ... 
]; 

теперь будет выглядеть примерно так:

_queue: [ 
    {x:x, y:y}, // what you had just inserted 
    {x:1, y:1}, 
    {x:2, y:2}, 
    {x:3, y:3}, 
    ... 
]; 

insert функция, где это вызывается принимает два параметра x и y , поэтому, когда мы вставляем объект, например:

{x:x, y:y} 

Что это действительно означает, что мы вставка объекта Кто есть поля:

{ 
    x: x, //(whatever argument was passed in for `x` when the function was called) 
    y: y //(whatever argument was passed in for `y` when the function was called) 
} 
+0

он сказал, что знает, что делает смещение –

+0

@KeithNicholas Я знаю об этом, но это не значит, что мне не разрешают быстро идти над тем, что он делает для полноты. Я также обновил свой ответ, чтобы охватить больше информации –

1

Это добавление объекта в массив, так что, если массив был ранее пуст, он будет выглядеть следующим образом:

[ 
    { 
    x: "whatever the value of x was passed into that method", 
    y: "whatever the value of y was passed into that method" 
    } 
] 

Как почему? Я понятия не имею, не видя всего кода

1
{x:x,y:y} 

нечетное синтаксис, когда вы первый попадались, но в JavaScript, ключ не может быть переменным поэтому рассматривается как литерал, а значение - это переменная.

так что если x =1;

var o = { 
    x:x 
} 

будет означать o = {x:1}

если вы сделали хотите ключ от переменной, то вы бы использовать что-то вроде

var x = 1; 
var key = "x"; 
o = {} 
o[key] = x; 
Смежные вопросы