2013-05-27 4 views
0
Number.prototype= 
{ 
    constructor:Number 
    min:10, 
    max:15 
}; 
var obj=new Number(); 
alert(obj.min); 

Здесь я создал новый прототип для конструктора по умолчанию Number. Затем создается новый экземпляр Number в obj. Как я создал экземпляр после назначения прототипа, я ожидаю, что obj.min вернет 10, но он возвращает undefined.Переназначение прототипов встроенных типов

Я полагаю, что, так как конструктор свойство вновь созданных Number.prototype указывает на то же Number конструктору то экземпляр obj «s [PROTOTYPE] свойство указывает на вновь созданный прототип.

Я думаю, что проблема кроется в предположении и что свойство obj[PROTOTYPE] указывает на исходный прототип по умолчанию.

+0

Вы забыли запятую после "Номер";) – AndreM96

+0

согласно спецификации, 'Number.prototype' предназначен только для чтения: http://es5.github.io/# x15.7.3.1. @Andre: Должна быть опечатка в сообщении, иначе «предупреждение» никогда не будет выполнено. –

ответ

4

Прототипом свойство основных типов, определяемых ECMAScript (Object, Number, Boolean, Array, String, Function, Error, RegExp) только для чтения, вы не можете заменить его самостоятельно.

Но вы можете продлить его:

Number.prototype.min = 5; 
+0

хорошо, что свойство делает их только для чтения. –

+0

@chetan: Спецификация: http://es5.github.io/#x15.7.3.1. –

+0

@chetanmehta: неверно на Chrome. http://tinker.io/c3d8b. Они могут быть расширены, однако функции, определенные браузером, не могут быть заменены. –

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