На данный вопрос уже ответили:
{
let foo = function () { }
let o = {}
o[foo] = 'test string'
console.log(`o[foo]: ${o[foo]}`)
// Type '() => void' cannot be used as an index type.
}
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Map#Сходство_объектов_и_map
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Objects_and_maps_compared
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object#Parameters
Pairs of names (strings) and values (any value) where the name is separated from the value by a colon.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object#Параметры
Пары из имён (строки) и значений (любые значения), где имя отделяется от значения двоеточием.
пруфы на ecmascript? или ...
а вообще кого считать авторитетным источником ?
да, есть ли у хрома анлог документации MDN ?
возможно какие-либо рекомендации от разработчиков(хрома) ?
а как оно вообще работает ?
например в приведённом ниже коде ключ [arr]
это ссылка ?
если да - а как там со сборщиком мусора и доступом из корня ? ( на сегодня, жеж, вроде как победили перекрёстные ссылки. тема отдельного вопроса, но всё же, если кто в курсе - прошу поделиться ходя бы ссылками. например отредактировав это вопрос)
{
let el = function () {
let t = Date.now()
document.body.innerHTML += `<table id="log${t}"></table>`
return document.getElementById('log' + t)
}()
let log = (_f = '<hr>') => 'string' == typeof _f
? el.innerHTML += `<tr> <td><hr></td> <td>${_f}</td></tr>`
: el.innerHTML += `<tr> <td>${_f.toString()}</td> <td>${_f()}</td></tr>`
// ---
let arr = ['a']
let o = {
[arr]: 'test'
}
// --
log(() => o[['a']])
log(() => o[arr])
log()
arr = undefined
log(() => o[['a']])
log(() => o[arr])
}
{
let foo = function () { }
let o = {}
o[foo] = 'test string'
console.log(`o[foo]: ${o[foo]}`)
// Type '() => void' cannot be used as an index type.
}
Ну и что вам тут не нравится, написано же:
В объекте ключи должны быть строками, когда в Map они могут иметь любой тип.
Вы попробуйте вывести объект, который написали
const prop1 = 10
const prop2 = [1, 2, 3, 4]
const prop3 = {a: 1}
const test = {[prop1]: 'prop1', [prop2]: 'prop2', [prop3]: 'prop3'}
// {1,2,3,4: "prop2", 10: "prop1", [object Object]: "prop3"}
То есть в данном случае, просто неявно вызывается метод toString
, либо считает значение переменной. Таким образом можно передавать динамически ключи:
const prop = Math.random() > 0.5 ? 'more': 'less';
const test2 = {[prop]: true};
Про Map
отдельная тема, но это и не объект совсем, а скорее новая структура. И ключи там могут быть чем угодно, хоть функцией, хоть объектом. Тут работает обычное сравнение по значению/ссылке
const mapProp = {'prop': 1}
const test3 = new Map();
test3.set(mapProp, true);
test3.get(mapProp)
// true
// объект схож
const mapProp2 = {'prop': 1}
// но это не работает
test3.get(mapProp2)
// undefined
а вообще кого считать авторитетным источником ?
Спецификацию: http://www.ecma-international.org/ecma-262/9.0/index.html
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Помогите додумать кодУ меня есть 3 блока с текстом и чекбокосм, при переключении блоков я меняю фон и текст, но мне так же надо менять цвет...
Как сделать прелоадер для ангуляра(роунтинг) который будет пропадать только после полной загрузки страницы ?
Прошу помочь разобраться с темой использования VK API в Direct Games вконтактеЕсть прототип игры и хотел разобраться с работой api
Есть приложение на Angular 6 в котором используется typescript соответственноЕсть кнопка копирования статистики из разных частей страницы