方法已添加到ECMASscript第5版,为什么要进行此条件检查?

时间:2018-07-09 13:18:40

标签: javascript

if(typeof Object.create !== "function") {

   Object.create = function(o) {

      function F(){}
      F.prototype = 0;
      return new F();
};

为什么if(typeof Object.create !== "function")是刚刚创建的并且是内置方法?为什么需要检查它是否是一个函数,如创建的那样?

2 个答案:

答案 0 :(得分:3)

这将测试JS引擎是否具有本机Object.create方法。

如果没有,则添加一个。

这是为了避免用JS编写的方法替换内置方法(可能会进行大量优化)。

答案 1 :(得分:0)

Object.create()方法使用现有对象来提供新创建的对象的___proto____,从而创建一个新对象。 -MDN

该条件检查Object.create()是否可用。在某些JS引擎中,情况并非如此,这就是为什么必须进行检查的原因。