javascript typeof Object.create!=='function'

时间:2018-11-08 18:20:30

标签: javascript

来自道格拉斯·克罗克福德(Douglas Crockfords)的JavaScript书。

if (typeof Object.create !== 'function')
{
  object.create = function(o) {
          var F = function () {}; 
          F.prototype = o; 
          return new F();
  }
};

我的问题是 这条线有什么用?

typeof Object.create !== 'function'

谢谢。

2 个答案:

答案 0 :(得分:0)

new function(){}返回一个对象,默认情况下Object.create返回一个函数。

该行可能不起作用的原因仅仅是因为Douglas Crockford的书是printed in 2008,而当时并不能保证跨平台的兼容性,这是为什么需要特定条件来确保何时访问Object.create将按预期工作。

console.log(typeof Object.create)
console.log(typeof new function(){})

console.log(Object.create instanceof Object)
console.log(new function(){} instanceof Object)

console.log(Object.create instanceof Function)
console.log(new function(){} instanceof Function)

答案 1 :(得分:0)

这是一个比较,typeof评估值是否为给定类型(字符串,整数,函数),以便该行询问Object.create(它是一个函数)是否不等于函数。

这里的情况是Object.create确实是一个函数,因此除非将Object.craete更改为其他内容,否则条件永远不会成立。