2013-03-03 3 views
0

я дурачился с идеей добавления метода на класс объектов, как так:расширяющий класс Object

Object.prototype.is = function(operand) { 
    return this === operand; 
}; 

10.is(10); // returns false 

Я немного раздосадован исходом, кто может предложить некоторое представление?

+0

Этот код даже не запускается для меня –

+2

Последняя строка должна быть '10..is (10);' – lonesomeday

+0

Расширение 'Object.properties' - плохая идея. jQuery будет ненавидеть вас, для начала. –

ответ

8

В JavaScript числовые примитивы не являются экземплярами Number. Когда компилятор видит 10.is, он обертывает 10 в объект Number (так как только объекты могут иметь свойства). Этот объект не равен аргументу 10, потому что === подавляет автоматическое преобразование типов.

P.S. Вам нужно что-то вроде (10).is(10), чтобы ваш код был легальным синтаксисом.

Смежные вопросы