Я бы согласился с большинством присутствующих здесь людей в том, что в логическом объекте нет особой необходимости, но я хочу указать на пару вещей.
Явное сравнение по-прежнему будет оцениваться как логическое:
var someBool = new Boolean(false);
if (someBool == false)
alert('Got here'); //Alerts 'Got here'
Из-за этого вы можете вроде расширить его до подкласса и по-прежнему иметь возможность выполнять сравнение, как указано выше:
var classExtension = {
toYN: function() {
return this == false ? 'N' : 'Y';
}
};
function getNewClass(val) {
var newBool = new Boolean(val);
jQuery.extend(newBool, classExtension);
return newBool;
}
var newTest = getNewClass(false);
if (newTest)
alert('It\'s alive');
if (newTest == false)
alert('And still a bool');
alert(newTest.toYN());
Это предупредит: «Это живое», «И все же булево» и «N». http://jsfiddle.net/fkJuk/
Но опять же, действительно ли вам это понадобится? Даже если бы вы это сделали, вероятно, было бы лучше просто иметь свой собственный отдельный класс с проверяемым логическим свойством. В конце концов, он, вероятно, здесь для единообразия; у каждого примитива есть прямой доступ к конструктору и прототипу в JavaScript.
person
Matt Molnar
schedule
26.05.2011