它来自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更改为其他函数,否则该条件永远不会为真。