-
Website
http://ulizko.com -
Original page
http://ulizko.com/posts/203 -
Subscribe
All Comments -
Community
-
Top Commenters
-
kannattaa
1 comment · 1 points
-
Zvezda
2 comments · 1 points
-
Малышка Мика
2 comments · 1 points
-
bobrik
2 comments · 4 points
-
mekal
2 comments · 1 points
-
-
Popular Threads
Какая же это бага? Это скорее вы чего-то странного хотите :) Boolean и Number это объекты-обертки над примитивными типами данных boolean и number. Методы YUI.Lang.isBoolean и YUI.Lang.isNumber как раз и проверяют примитивного ли типа переменная.
Кстати, я вообще не понимаю зачем использовать эти объекты в явном виде и писать new Boolean, new Number и new String. Если нужны методы этих объектов, то примитивные типы boolean, number и string автоматически оборачиваются в эти объекты:
var a = 123.45678;
alert(a.toFixed(3));
Если же очень хочется писать new Number, то у полученного объекта есть метод valueOf, который возвращает "обернутое примитивное значение". Результат вызова valueOf и передавайте в YUI.Lang.isNumber, а курочить YUI не надо :)
Любопытно. Если мне не изменяет память, встроенные типы данных -- это
Undefined, Null, Boolean, Number, String, Object. А примитивы boolean и
number - это что-то вроде "примитивных значений" соответствующих встроенных
типов. Хотя за правильность формулировки не ручаюсь, лень лезть в спеку.
Я хочу не странного, а того, чтобы эти методы возвращали true, если в них
передаешь примитив или встроенный тип.
So am I :)
Не поленился посмотреть спецификацию:
4.3.2 Primitive Value
A primitive value is a member of one of the types Undefined, Null, Boolean, Number, or String. A primitive value is a datum that is represented directly at the lowest level of the language implementation.
4.3.3 Object
An object is a member of the type Object. It is an unordered collection of properties each of which contains a primitive value, object, or function. A function stored in a property of an object is called a method.
...
4.3.20 Number Type
The type Number is a set of values representing numbers. In ECMAScript, the set of values represents the double-precision 64-bit format IEEE 754 values including the special “Not-a-Number” (NaN) values, positive infinity, and negative infinity.
4.3.21 Number Object
A Number object is a member of the type Object and is an instance of the built-in Number object. That is, a Number object is created by using the Number constructor in a new expression, supplying a number as an argument. The resulting object has an implicit (unnamed) property that is the number. A Number object can be coerced to a number value by calling the Number constructor as a function.
-----------------------
new Number возвращает именно объект (Object).
Кстати, немаловажно заметить, что примитивные типы передаются по значению, в то время как объекты передаются по ссылке.
var a = new Number();
alert(typeof a === 'object' && a instanceof Number && a instanceof Object);
// true
Получается, Number Object это подобъект (ну, или что-то в этом роде) типа
Object.
А объект Number экземпляр встроенного объекта Number.
И ситуация с Boolean и String симметричная.
А с другой стороны, типов (в значении "набор значений данных") все равно
шесть - Undefined, Null, Boolean, Number, String и Object. Мы это знание
получим, прочитав 8 (стр. 31)