类似于,但不同于这个问题。下面的代码来自JavaScript: The Definitive Guide。他基本上是在定义一个继承方法,如果 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.
}