Worker IS类型的函数。您可以使用typeof
operator进行检查。但是,它不继承 Function 构造函数的原型,因此它不是instanceof
Function。
这是一个更实际的例子:
function fun(){};
Function.prototype.foo = 'my custom Function prototype property value';
console.log(fun.foo); //my custom Function prototype property value
console.log(fun instanceof Function); //true
console.log(typeof Worker); //function, the constructor
console.log(Worker.foo); //undefined, this host constructor does not inherit the Function prototype
console.log(Worker instanceof Function); //false
var worker = new Worker('test.js');
console.log(typeof worker); //object, the instance
console.log(worker.foo); //undefined, instance object does not inherit the Function prototype
console.log(worker instanceof Function); //false
来自MDN:
运算符测试对象的instanceof
原型链中是否具有构造函数的原型属性。
Worker 不继承 Function 构造函数的原型,因此它不是 Function 的实例。
下面是一个使用typeof
运算符检查用户浏览器是否支持 Web Workers API 的示例:
if (typeof window.Worker !== 'undefined') {
alert('Your browser supports Web Workers!');
} else {
alert('Sorry, but no.'); //too lazy to write a proper message for IE users
}
小提琴