Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Если это - объект тогда, необходимо просто быть в состоянии проверить, чтобы видеть, ли это пустой указатель или не определено , и затем загрузите его, если это.
if (myObject === null || myObject === undefined) {
myObject = loadObject();
}
Используя функция typeof является также опцией, поскольку она возвращает тип обеспеченного объекта. Однако это возвратится пустой или неопределенный , если объект не был загружен так, это могло бы свестись немного к персональному предпочтению в отношении удобочитаемости.
if(typeof(o) != 'object') o = loadObject();
Я не уверен, под чем Вы подразумеваете "загруженный"..., переменная object
существует и просто не имеет типа, который Вы хотите? В этом случае Вы захотите что-то как:
function isObjectType(obj, type) {
return !!(obj && type && type.prototype && obj.constructor == type.prototype.constructor);
}
и затем используют if (isObjectType(object, MyType)) { object = loadObject(); }
.
, Если object
не заполняется ни с чем перед Вашим тестом (т.е. - typeof object === 'undefined'
) тогда, Вам просто нужно:
if ('undefined' === typeof object) { object = loadObject(); }
Вы, вероятно, хотите видеть, ли данный объект , определил
Особенно, если его сделанный в асинхронном потоке с setTimeout для проверки, когда он поднимается.
var generate = function()
{
window.foo = {};
};
var i = 0;
var detect = function()
{
if( typeof window.foo == "undefined" )
{
alert( "Created!");
clearInterval( i );
}
};
setTimeout( generate, 15000 );
i = setInterval( detect, 100 );
должен в теории обнаруживать, когда window.foo входит в существование.
Если загруженным Вы имеете в виду определенный, можно проверить тип переменной с функцией typeof. ОДНАКО typeof имеет несколько причуд и определит Объект, Массив, и пустой указатель как объект
alert(typeof(null));
Идентификация пустого указателя, поскольку определенный объект, вероятно, заставил бы Вашу программу перестать работать, поэтому сверился бы с чем-то как
if(null !== x && 'object' == typeof(x)){
alert("Hey, It's an object or an array; good enough!");
}
Можно также просто использовать ярлык if(obj)
Если Вы хотите обнаружить пользовательский объект:
// craete a custom object
function MyObject(){
}
// check if it's the right kind of object
if(!(object instanceof MyObject)){
object = new MyObject();
}
typeof(obj)
возвратил бы "объект" для объекта класса среди других возможных значений.