Подобен, но отличается от этого вопроса . Приведенный ниже код взят из JavaScript: Полное руководство . Он в основном определяет метод наследования, который подчиняется Object.create, если он существует, в противном случае выполняет простое старое наследование Javascript, используя конструкторы и меняя местами прототипы.
У меня вопрос: поскольку Object.create не существует в многих распространенных браузерах IE, какой смысл даже пытаться его использовать? Это, безусловно, загромождает код, и один из комментаторов предыдущего вопроса упомянул, что Object.create не слишком быстр .
Так в чем же преимущество попытки добавить дополнительный код, чтобы время от времени использовать эту функцию ECMA 5, которая может быть медленнее, а может и не быть медленнее, чем "старый" способ сделать это?
function inherit(p) {
if (Object.create) // If Object.create() is defined...
return Object.create(p); // then just use it.
function f() {}; // Define a dummy constructor function.
f.prototype = p; // Set its prototype property to p.
return new f(); // Use f() to create an "heir" of p.
}