Почему свойство F.prototype несовместимо в журналах - PullRequest
1 голос
/ 24 апреля 2020

Итак, функции имеют тип Object и поэтому могут иметь свойства. По умолчанию функция F будет иметь имя, длину и свойство prototype, а свойство prototype по умолчанию будет установлено на объект, имеющий один ключевой «конструктор», который указывает на саму функцию. то есть

function F() {
  this.foo = "bar";
}

/* default prototype
F.prototype = { constructor: F};
*/

Это можно проверить, запустив console.log(Object.getOwnPropertyDescriptors(F.prototype));, который выдает

 {
    constructor: {
        value: [Function: F],
        writable: true,
        enumerable: false,
        configurable: true
    }
 } 

, а F.prototype.constructor == F оценивается как true.

Что сбивает с толку, так это то, что console.log(F.prototype); выведет только пустой объект F {}

Аналогично console.log(Object.getOwnPropertyDescriptors(F)); выдаст следующее:

{
length: { value: 0, writable: false, enumerable: false, configurable: true },
  name: {
    value: 'F',
    writable: false,
    enumerable: false,
    configurable: true
  },
  prototype: {
    value: F {},
    writable: true,
    enumerable: false,
    configurable: false
  }
}

Почему это что они возвращают пустой объект F {}, когда я ожидал что-то вроде { constructor: [Function: F] }?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...