Что корректный путь состоит в том, чтобы протестировать на существование свойства на Объекте JavaScript?

Вы также можете использовать метод DateTime.TryParse для преобразования даты. Он использует текущие настройки культуры для определения сводного года (в моем случае это 2029 год)

DateTime resultDate;
Console.WriteLine("CultureInfo.CurrentCulture.Calendar.TwoDigitYearMax : {0}", System.Globalization.CultureInfo.CurrentCulture.Calendar.TwoDigitYearMax);
DateTime.TryParse("01/01/28", out resultDate);
Console.WriteLine("Generated date with year=28 - {0}",resultDate);
DateTime.TryParse("01/02/29",out resultDate);
Console.WriteLine("Generated date with year=29 - {0}", resultDate);
DateTime.TryParse("01/03/30", out resultDate);
Console.WriteLine("Generated date with year=30 - {0}", resultDate);

Выходные данные:

CultureInfo.CurrentCulture.Calendar.TwoDigitYearMax: 2029

Дата создания с годом = 28 - 01/01/2828 00:00:00

Дата создания с годом = 29 - 01/02/2029 00:00:00

Дата создания дата с годом = 30 - 01/03/1930 00:00:00

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

DateTime.TryParse века управления C #

Но, как сказал Мартин, если вы хотите управлять периодом времени, который охватывает более 100 лет, есть это невозможно сделать только двумя цифрами.

21
задан Felix Kling 7 September 2014 в 20:32
поделиться

2 ответа

hasOwnProperty is exactly what you're looking for, since you specify "if the property is explicitly defined for this object, not in the prototype chain". Per https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/hasOwnProperty , "This method can be used to determine whether an object has the specified property as a direct property of that object; unlike the in operator, this method does not check down the object's prototype chain." -- seems to exactly match your requirement!

30
ответ дан 29 November 2019 в 20:39
поделиться

Если вы ищете свойство, определенное в объекте, вы можете использовать метод hasOwnProperty объекта. вроде этого:

myObject = new MyObject();
// some code
if ( myObject.hasOwnProperty('prop') ) {
    // prop exists
}

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

Другой способ - проверить свойство на соответствие неопределенному значению. вот так:

if ( myObject.prop !== undefined ) {
    // prop exists
}

не забудьте использовать оператор! == вместо! =, потому что! = не будет отличаться между null и undefined, а! == имеет. поэтому, если у вашего объекта есть свойство, но значение равно null,! = вам не поможет. поэтому этот тест:

if ( myObject.prop ) {
}

может дать неверные результаты, если "prop" имеет ложное или нулевое значение.

8
ответ дан 29 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

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