Понимание Крокфорда Object.create прокладка
Я читал о прокладке Крокфорда для предотвращения перезаписи прототипов и понимаю, что время от времени это не окончательное решение. Я тоже понимаю чтоES5 Шим может быть жизнеспособной альтернативой этому. Я тоже читаюэтот пост, который предоставляет более надежную и безопасную альтернативу.
Тем не менее, я хотел бы знать, что егоObject.create
шим "говорит" а затем "делать". Может кто-нибудь сказать мне, если мои комментарии объяснения верны?
<code>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. </code>
Таким образом, прототип «марионетки» объект не может быть перезаписан, когда мы добавляем материал к «another_stooge». Нет необходимости сбрасывать значение «stooge» прототип с использованием «конструктора».
Заранее спасибо,
-k