JavaScript typeof Object.create !== 'function'



它来自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'

谢谢。

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

这条线可能不起作用的原因很简单,因为Douglas Crockford的书于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)

这是一个比较,typeof计算值是否为给定类型(字符串、整数、函数(,因此行询问Object.create(它是一个函数(是否不等于函数。

这里的情况是Object.create实际上是一个函数,所以除非您将Object.craete更改为其他函数,否则该条件永远不会为真。

相关内容

最新更新