Есть ли в JS операции связывания имен?
Я новичок в JS. Позвольте мне проиллюстрировать мой вопрос несколькими примерами.
Код 1
var temp = { key: "value" };
var data = ["v1", "v2"];
var result = [];
for (var i in data) {
var newdata = temp; /** Note here! **/
newdata.key = data[i];
result.push(newdata);
}
console.log(result);
// [ { key: 'v2' }, { key: 'v2' } ]
result
здесь неожиданно.
Код 2
var temp = { key: "value" };
var data = ["v1", "v2"];
var result = [];
for (var i in data) {
var newdata = { key: "value" }; /* Note here! */
newdata.key = data[i];
result.push(newdata);
}
console.log(result);
// [ { key: 'v1' }, { key: 'v2' } ]
Теперь result
это то, что я хочу.
Похоже, операция связывания имени в Python. Но я много гуглил и не мог получить удовлетворенный ответ. Поэтому я должен обратиться за помощью к stackru.
Мой вопрос:
Есть ли в JS операция связывания имен, аналогичная Python? Если нет, то почему эти два кода получают разные результаты?
[Редактировать]
Я знаю о ссылках в C++ и привязке имен в Python. И я также знаю о различиях между этими двумя.
Единственное, что меня смутило, было: в JS это ссылка или привязка имени? Или что-то другое?
Благодаря всем комментариям я полностью понимаю, что это похоже на привязку имени, а не ссылку. (Поскольку я не могу найти ни одной кнопки, чтобы закрыть этот вопрос, я добавляю ответ здесь.)