`1 instanceof Number` 为啥是false?

如题:

1 instanceof Number //false

var a = new Number(1);
a instanceof Number // true

为啥 一个false 一个true?

阅读 12.5k
7 个回答

instanceof判断一个对象是否是另一个对象的实例,而数字1是基本数据类型,不是对象,
var a = new Number(1);是通过包装类Number把数字1转换成对象,你可以用typeof a,和typeof 1,看看他们返回的值

语法 object instanceof constructor
左侧不是 object, return false

其实你的描述已经解释了,1是primitive类型,Number(1)才是Number类型。
1.toFixed(2)之所以能调用,是因为1在调用时会被自动包装成Number(1)

内置对象应该用typeof,自定义对象用intanceof

instanceof 不靠谱 建议使用 Object.prototype.toString.call()

原始类型 使用instanceof 都返回false 而第一个是使用Number把1包装成了对象

1 不是Number 的实例啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题