【发布时间】:2011-11-22 06:18:12
【问题描述】:
与this question 相似但不同。下面的代码来自JavaScript: The Definitive Guide。他基本上是在定义一个继承方法,如果 Object.create 存在,则该方法遵循它,否则使用构造函数和交换原型进行普通的旧 Javascript 继承。
我的问题是,既然 Object.create 在很多常见的浏览器 IE 上不存在,那么尝试使用它有什么意义呢?它肯定会使代码混乱,上一个问题的评论者之一提到 Object.create isn't too fast。
那么,尝试添加额外代码以便偶尔利用这个可能会或可能不会比“旧”执行方式慢的 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.
}
【问题讨论】:
标签: javascript javascript-objects ecmascript-5 object-create