Единая функция, не определенная во внешнем файле JavaScript [duplicate]

Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.

например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.

public Class myClass
{
   public int prop1 {get;set;}
}

Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref.prop1 = 1;  //This line throws error
     }
}

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

Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref = new myClass();
        ref.prop1 = 1;  
     }
}
14
задан Jasper 15 November 2011 в 21:45
поделиться

7 ответов

Глобальные переменные и функции могут быть созданы путем назначения их как свойства window:

$(function(){
    window.foo = function foo() {
        // …
    }
});

foo() должно быть доступно в любом месте после выполнения этого обработчика.

18
ответ дан millimoose 26 August 2018 в 18:27
поделиться

Это зависит от того, как вы объявляете переменные внутри функции .ready(). Если вы выполняете var x = "test", то нет, они доступны только в пределах функции готовности. Если вы сделаете что-то вроде x="test", то это доступно в глобальной области видимости, и вы можете просто получить к нему доступ, например alert(x); или alert(window.x);

. Вероятно, вы не хотите определять переменные внутри готового но если вы пытаетесь использовать их вне готовой функции.

1
ответ дан arb 26 August 2018 в 18:27
поделиться

Для этого нужна отладка. Во всех основных браузерах (включая IE) вы можете установить точки останова в javascript-коде. Когда это будет сделано, скрипт остановится, и вы сможете проверить свои переменные.

Вот некоторые ссылки:

2
ответ дан Community 26 August 2018 в 18:27
поделиться

Как я могу получить доступ к этим переменным?

Ну, вы не можете. Все, что вы определяете внутри анонимной функции, например, то, что вы используете в $(document).ready, ограничено этой анонимной функцией.

Таким образом, вы можете поместить свой console.log внутри $(document).ready, если вам нужно проверить какую-либо частную переменную, определенную в ее области.

2
ответ дан Darin Dimitrov 26 August 2018 в 18:27
поделиться

Объявить переменную в глобальной области:

Например,

<script type="text/javascript">
var globalVar = null;
$(document).ready(
function() {
     globalVar = "This is the value";
}
);

function TestFunc() {
    alert(globalVar);
}
</script>

Здесь, если вы вызываете TestFunc() в любое время после загрузки страницы, вы увидите значение, присвоенное в функция ready ().

1
ответ дан James Jithin 26 August 2018 в 18:27
поделиться

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

var a = "bar";

$(document).ready(function(){
    a = "foo";
});

Если вы используете firebug, вы должны иметь возможность называть console.log в документе готовы, что может дать вам то, что вы ищете.

0
ответ дан James Johnson 26 August 2018 в 18:27
поделиться

Если у вас есть

var x = "foo"
$(document).ready(function(){
  alert(x); // foo
});

Вы можете видеть переменную x в любом месте, но если вы объявите переменную y в готовый документ, она будет доступна только в готовом документе :

var x = "foo"
$(document).ready(function(){
  alert(x); // foo
  var y = "bar"
  alert(y); // bar
});
alert(y); // undefined
0
ответ дан Mr_Nizzle 26 August 2018 в 18:27
поделиться
Другие вопросы по тегам:

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