为什么Math是一个对象而String是一个函数?

siv*_*636 1 javascript

以下是我的Chrome javascript控制台的屏幕截图:

在此输入图像描述

为什么Math被视为一个对象String,Boolean而且Window都被认为是函数?

jfr*_*d00 7

String并且Boolean是用于显式创建该类型对象的构造函数,可以用作:

var s = new String("hello");
var t = new Boolean(true);
Run Code Online (Sandbox Code Playgroud)

通常没有必要像这样直接使用这些构造函数,但是如果由于某种原因需要完整的字符串或布尔对象而不是基元,它们就在那里.


Math是用作作为容器的作品举办了一堆的数学函数,如命名空间的对象Math.min(),Math.max(),Math.random(),等...这不是一个构造函数和本身不创建其他对象.您可以在MDN上看到Math对象的详细说明.

从那个描述:

Math是一个内置对象,具有数学常量和函数的属性和方法.不是函数对象.

与其他全局对象不同,Math不是构造函数.Math的所有属性和方法都是静态的.您将常量pi称为Math.PI,并将正弦函数称为Math.sin(x),其中x是方法的参数.常量用JavaScript中的实数的完整精度定义.

它们是用于不同目的的不同东西.


Window是一个有点不同的野兽.它可能与主机对象有关window,但它虽然报告为function背后的本机代码,但Chrome浏览器不允许您将其称为函数或构造函数.