Javascript бесконечная цепочка прототипов - PullRequest
6 голосов
/ 20 января 2011

Я использую следующий тестовый код:

function Test() {

 }

 Test.prototype.MyMethod =  {
    a: function() {

    },
    b: function() {

    }
 }

И чтобы запустить его, я просто делаю:

var test = new Test();
console.debug(test);

В консоли firebug я раскрываю напечатанный объект и заглядываю внутрь __proto__:

Там найдите бесконечную цепочку конструктора -> прототип:

+MyMethod
-constructor
  -prototype
     +MyMethod
     -constructor
        -prototype
           +MyMethod
           -constructor

и так далее. Я сделал что-то не так здесь? Почему цепочка прототипов кажется бесконечной?

Ответы [ 2 ]

9 голосов
/ 20 января 2011

prototype s имеют свойство под названием constructor, которое относится к функции, которой принадлежит прототип.

Этот цикл задуман.

6 голосов
/ 20 января 2011

Конструктор прототипа обращается к самому себе, поэтому, когда вы его «разворачиваете», вы просто открываете одну и ту же структуру снова и снова. На самом деле это не «бесконечно».

...