Javascript中的函数对象或类型? [英] Are functions objects or types in Javascript?
问题描述
在他的 Eloquent Javascript 中,Haverbeke声称(第16页):
In his Eloquent Javascript, Haverbeke claims that (page 16):
在JavaScript系统中,大部分内容都是数据被整齐地分成称为值的东西。每个值都有一个类型,它决定了它可以扮演的角色类型。有六种基本类型的值:数字,字符串,布尔值,对象,函数和未定义的值。
但 Javascript:好的部分中的Crockford说:
But Crockford in Javascript: The Good Parts says:
简单类型的JavaScript是数字,字符串,布尔值(真和假),空和未定义。所有其他值都是对象。数字,字符串和布尔值是对象的,因为它们有方法,但它们是JavaScript中的对象是可变的键控集合。在JavaScript中,数组是对象,函数是对象,正则表达式是对象,当然,对象是对象。
现在,至少在V8下我得到这个:
Now, at least under V8 I get this:
> typeof function(){};
'function'
> typeof {};
'object'
我不明白对象是否是类型,函数是对象或函数和对象都是类型。我想我错过了原始类型和其他类型(复合类型?)之间的区别。
I don't understand if object is a type and function is an object or if function and object are both types. I guess I'm missing the distinction between primitive types and other kind of types (composite types?).
推荐答案
它们是一种对象。
typeof
是function
:
typeof (function() {}) === "function" // true
内部 [[Class]]
是 [object Function]
:
({}).toString.call(function() {}) === "[object Function]" // true
他们是的一个实例函数
构造函数原型:
(function(){}) instanceof Function // true
它们是 Object
构造函数原型的一个实例:
They're an instance of the Object
constructor prototype:
(function(){}) instanceof Object // true
这篇关于Javascript中的函数对象或类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!