2012-05-05 4 views
4

Я читаю JavaScript Хорошие детали без предварительного знания js, и этот бит меня озадачил. Думаю, мне нужно разъяснение.Все ли связано с прототипом функции?

JavaScript позволяет расширить базовые типы языка. В главе 3 мы увидели, что добавление метода Object.prototype делает этот метод доступным для всех объектов. Это также работает для функций, массивов, строк, чисел, регулярных выражений и булевых. Например, путем увеличения Function.prototype, мы можем сделать метод доступным для всех функций:

Затем идет с этим примером:

Function.prototype.method = function (name, func) { 
    this.prototype[name] = func; 
    return this; 
}; 

Теперь каждый основной тип имеет метод «метод» поэтому для них могут быть определены новые функции:

Number.method('integer', function() { 
    return Math[this < 0 ? 'ceiling' : 'floor'](this); 
}); 

Но в книге ранее было отмечено, что все ссылки на объект не функционируют! Как это работает?

ответ

3

Нет, только функции имеют Function.prototype. Number - конструктор функция, поэтому он «связан» с этим прототипом.

Вот то, что nodejs/V8 оболочка говорит о Number:

> Number 
[Function: Number] 
> typeof Number 
'function' 
+0

Не очень интуитивно, но, по крайней мере последовательны. Благодарю. – user1376727

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