In his 雄辩的 JavaScript,Haverbeke 声称(第 16 页):
“在 JavaScript 系统中,大部分数据被整齐地分成称为值的东西。每个值都有一个类型,它决定了它可以扮演的角色。值有六种基本类型:数字、字符串、布尔值、对象、函数和未定义的值。”
但克罗克福德在Javascript:好的部分 says:
“JavaScript 的简单类型是数字、字符串、布尔值(true 和 false)、null 和 undefined。所有其他值都是对象。数字、字符串和布尔值类似于对象,因为它们具有方法,但它们是不可变的。 JavaScript 中的对象是可变键控集合。在 JavaScript 中,数组是对象,函数是对象,正则表达式是对象,当然,对象也是对象。”
现在,至少在 V8 下我得到了这个:
> typeof function(){};
'function'
> typeof {};
'object'
我不明白对象是否是类型而函数是对象,或者函数和对象是否都是类型。我想我错过了原始类型和其他类型(复合类型?)之间的区别。
它们是一种对象。
The typeof
is "function"
:
typeof (function() {}) === "function" // true
内置的[[Class]]
is [object Function]
:
({}).toString.call(function() {}) === "[object Function]" // true
他们是一个例子Function
构造函数原型:
(function(){}) instanceof Function // true
他们是一个例子Object
构造函数原型:
(function(){}) instanceof Object // true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)