Аналогично, но отличается от этого вопроса. Ниже приведен код из 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.
}