Javascript中的函数对象或类型? [英] Are functions objects or types in Javascript?

查看:67
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆