JavaScript: Сошлитесь на функции локальный объем как объект

Эта проблема также может исходить из свойства [NotMapped], которое имеет одно и то же имя в вашей модели БД и модели представления.

AutoMapper пытается выбрать его из БД во время проекции; и свойство NotMapped, очевидно, не существует в БД.

Решением является Ignore свойство в конфигурации AutoMapper при сопоставлении из модели БД модели View.

  1. Ищите свойство [NotMapped] с именем Foo в вашей модели DB.
  2. Ищите свойство с тем же именем Foo в вашей модели просмотра.
  3. Если это так, измените конфигурацию AutoMapper. Добавить .ForMember(a => a.Foo, b => b.Ignore());
23
задан aaaaaaaaaaaa 8 April 2010 в 15:34
поделиться

6 ответов

Нет, нет способа ссылаться на объект переменной контекста выполнения функции объекта привязки переменной среды объекта контекст выполнения (это то, что эта вещь называется [сейчас; отсюда зачеркивание]; подробности в §10.3 спецификации ). Вы можете получить доступ только к ограниченному представлению, которое вы получите с помощью arguments (что действительно очень ограничено).

Обычно, когда я хотел сделать это, я просто помещал все, что хотел, на объект, а затем использовал это (например, передавал это в функцию). Конечно, любые функции, созданные в контексте, имеют доступ ко всему в области, в которой они созданы, поскольку они «закрывают» контекст; подробнее: Затворы не сложны .

15
ответ дан T.J. Crowder 29 November 2019 в 02:56
поделиться

Если вы хотите перенести область действия функции на любой объект, вы можете использовать библиотеку подчеркивания с _.bind

В вашем случае:

var fn = _.bind(function(){
    console.log(this == window)
},window)

fn() // true
0
ответ дан Shanimal 21 July 2019 в 13:29
поделиться

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

(function(global) {
    var testVar = 1;

    global.scope = function(s) {
        return eval(s);
    }
})(this);

затем выполняется:

scope('testVar'); // 1

возвращает переменную из замыкания. Не особенно приятно, но теоретически возможно обернуть это в объект, возможно, используя некоторую проверку и методы получения и установки, если вам нужно?

Редактировать : Перечитав вопрос, я полагаю, вы Я хотел бы получить к нему доступ без указания функции в самой области, так что это, вероятно, не применимо. Я все равно оставлю это здесь.

8
ответ дан Dom Hastings 29 November 2019 в 02:56
поделиться

Некоторые версии Netscape имели магическое свойство в объекте arguments, который делал то, что вы искали. (Я не могу вспомнить, как это называлось)

1
ответ дан SLaks 29 November 2019 в 02:56
поделиться

Как насчет этого?

<script type="text/javascript">
    var test =  {
        bar : 1,
        foo : function () {
            alert(this.bar);
        }
    }

    test.foo();
</script>
0
ответ дан Ivo Sabev 29 November 2019 в 02:56
поделиться

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

-3
ответ дан 29 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

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