Получить ссылку на функцию, расположенную в том же объекте

Чтобы ответить на ваш вопрос о том, как вы можете это сделать, вы можете получить entrySet с вашей карты, а затем просто поместить в новую карту, используя getValue как key и getKey как value.

Но помните, что ключи на карте Map уникальны, что означает, что если у вас есть одно значение с двумя разными ключами на исходной карте, то только второй ключ (в порядке итерации) будет быть кеп как значение на новой карте.

0
задан Cinn 13 July 2018 в 11:54
поделиться

2 ответа

Область выполнения задания - это глобальная область действия, поэтому this не foo. Можно подумать, что это исправило бы это:

var foo = { f1: () => 5, f2: foo.f1() }

, но это не так, потому что в то время, когда литерал строит объект, присваивания не было, а foo undefined.

Вам нужно учитывать время и записать одно из следующего:

var foo = { f1: () => 5 }
foo.f2 = foo.f1

или

var f = () => 5
var foo = { f1: f, f2: f }

Конечно , если вы хотите просто разрешить f1 во время выполнения и не хотите явно ссылаться на функцию с круглыми скобками, вы все равно можете использовать функцию в качестве getter:

var foo = { f1: () => 5, get f2() { return foo.f1 } }
foo.f2
# => [Function: f1]
2
ответ дан Amadan 17 August 2018 в 12:59
поделиться

Этот ответ, вероятно, полезен:

Как "& quot; этот & quot; ключевое слово в действии Javascript внутри литерала объекта?

В этом ответе также есть полезные комментарии к разнице между стрелками и регулярными функциями, в частности, как влияет на this:

Функции стрелок vs Функции стрелочной стрелки

var testOne = {
  a: 'hello',
  b: () => console.log(this.a)
}

var testTwo = {}

testTwo.a = 'hello'
testTwo.b = function() {console.log(this.a)}

console.log(testOne.a)
testOne.b()

console.log(testTwo.a)
testTwo.b()

1
ответ дан OliverRadini 17 August 2018 в 12:59
поделиться
  • 1
    спасибо за источник, это было очень полезно! – Cinn 13 July 2018 в 12:21
Другие вопросы по тегам:

Похожие вопросы: