以下是我的Chrome javascript控制台的屏幕截图:
为什么Math
被视为对象,而String
,Boolean
和Window
都被视为功能?
答案 0 :(得分:7)
String
和Boolean
是用于显式创建该类型对象的构造函数,可用作:
var s = new String("hello");
var t = new Boolean(true);
通常不需要像这样直接使用这些构造函数,但是如果由于某种原因需要完整的字符串或布尔对象而不是基元,它们就在那里。
Math
是一个用作命名空间的对象,用作容纳一堆数学函数的容器,如Math.min()
,Math.max()
,Math.random()
等。它不是构造函数,也不会自己创建其他对象。您可以查看Math
对象here on MDN的详细说明。
根据该描述:
Math是一个内置对象,具有属性和方法 数学常数和函数。不是功能对象。
与其他全局对象不同,Math不是构造函数。所有 数学的属性和方法是静态的。你指的是常数 pi作为Math.PI,你将正弦函数称为Math.sin(x),其中x 是方法的论点。常量定义为完整 JavaScript中实数的精确度。
出于不同的目的,它们是不同的东西。
Window
是一个不同的野兽。它可能与主机对象window
有关,但虽然它报告为function
背后有本机代码,但Chrome浏览器不会让您将其称为功能或作为构造者。
答案 1 :(得分:1)
在简单示例中,您可以看到Math对象和String函数之间的不同
Math
是对象,具有命名空间函数
var Math = {
min : function(arg){
//code here
}
}
String是function并定义为
function String(){
}
String.prototype.match = function(){
}
答案 2 :(得分:0)
String
是function
,因为您需要使用function
创建new
的多个实例。如果string是一个容器,那么它就不会是function
。
var str = new String();
Math是一个对象,因为你需要一个带有Math.random
等实用方法的对象的声明。
// You cannot do that, so error.
var math = new Math();
答案 3 :(得分:0)
来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math
Summary Math是一个内置对象,具有属性和方法 数学常数和函数。不是功能对象。
描述与其他全局对象不同,Math不是 构造函数。 Math的所有属性和方法都是静态的。你提到 以常数pi作为Math.PI,并将正弦函数称为 Math.sin(x),其中x是方法的参数。定义了常量 在JavaScript中完全精确的实数。
答案 4 :(得分:0)
Math是JavaScript中的全局对象,没有构造函数。所有方法和属性都是静态的,您无法使用new
关键字创建新对象。这就是你将它视为一个对象的原因。