Общие сведения о прокладке Crockford& #39;s Object.create shim

Я читал о Crockford shim для предотвращения перезаписи прототипов и понимаю, что это не конец -all/be -all решение во время. Я также понимаю, что ES5 Shim может быть жизнеспособной альтернативой этому. Я также прочитал этот пост, в котором представлена ​​более надежная и безопасная альтернатива .

Тем не менее, я хотел бы знать, что его Object.createпрокладка "говорит", а затем "делает". Может кто-нибудь, пожалуйста, скажите мне, верны ли мои пояснительные комментарии?

if (typeof Object.create === 'undefined') { 
//If the browser doesn't support Object.create

  Object.create = function (o) {
  //Object.create equals an anonymous function that accepts one parameter, 'o'.

    function F() {};
    //Create a new function called 'F' which is just an empty object.

    F.prototype = o;
    //the prototype of the 'F' function should point to the
    //parameter of the anonymous function.

    return new F();
    //create a new constructor function based off of the 'F' function.
  };
}

//Then, based off of the 'Lost' example in the Crockford book...

var another_stooge = Object.create(stooge);

//'another_stooge' prototypes off of 'stooge' using new school Object.create.
//But if the browser doesn't support Object.create,
//'another_stooge' prototypes off of 'stooge' using the old school method.

Таким образом, прототип объекта «марионетка» не может быть перезаписан, когда мы добавляем материал в «другую _марионетку». Нет необходимости сбрасывать прототип «марионетки» с помощью «конструктора».

Заранее спасибо,

-k

10
задан Community 23 May 2017 в 12:25
поделиться