当我们说""的实例时,我们假设我们正在处理一个对象。当我们问instanceof
但true
时,为什么JavaScript的运算符(class A { }) instanceof Function
会返回typeof (class A { }) == "function"
?为什么不object
?
答案 0 :(得分:5)
当我们询问
时,为什么JavaScript的运算符instanceof
(class A { }) instanceof Function
会返回true
class
es只是构造函数的语法糖。即class A {}
的评估会产生一种功能。
以下两个例子(或多或少)是等价的,即它们产生相同的结果/值:
// class
class A {
constructor() {
this.foo = 42;
}
bar() {
console.log(this.foo);
}
}
// constructor function
function A() {
this.foo = 42;
}
A.prototype.bar = function() {
console.log(this.foo);
}
所有非原始值(字符串,数字,布尔值,空值,未定义,符号)都是JavaScript中的对象。函数也是对象,具有特殊的内部属性,使它们可调用(和/或可构造)。
为什么不反对?
typeof
返回函数值的字符串"function"
,因为它是如何在规范中定义的。