PyCharm getitem предупреждение для функций с массивами

Свойство prototype функции содержит объект, из которого все экземпляры этой функции наследуются при создании с помощью оператора new. И все эти объекты-прототипы (обычно) имеют свойство constructor, которое указывает на функцию - там вы имеете круглую ссылку. Таким образом, как свойство new test() наследует это свойство, (new test).constructor === test оценивается как true.

Вам нужно будет различать свойство prototype объекта функции и объекта-прототипа, из которого объект наследует - часто ссылается как «внутреннее свойство [[prototype]]».

Конструктор - это функция, не говорящая о Function, и имеет и то, и другое. Поэтому он наследует от объекта Function.prototype, где свойство constructor говорит, что все функции построены конструктором Function. Если ваша консоль разработчиков покажет прототип объектов Function, вы можете их увидеть. Я думаю, что в настройках есть опция.

Итак, знаменитая «цепочка прототипов» относится не к свойствам constructor и / или prototype, а о прототипе объекта, из которого этот объект наследуется от:

 function test() {}              new test()
   (a Function)              (a test instance)
        ||                           ||
        ||                           ||
        \/                           \/
 Function.prototype            test.prototype
(a Function, by spec)           (an Object)
        ||                           ||
        ||                           ||
        \/                           \/
 Object.prototype             Object.prototype
        ||                           ||
        ||                           ||
        \/                           \/
       null                         null
14
задан Vince W. 31 March 2015 в 17:09
поделиться