javascript 构造函数的 疑惑

javascript权威指南中的一句话:“javascript语言核心中的原始类型都包含内置构造函数”。这是什么意思啊,原始类型不是布尔型,数字和字符串吗,它们的内置构造函数是什么东西?构造函数不是给对象初始化的吗,难道我 var a=1 的时候也是在用数字的内置构造函数在进行初始化吗?

数字是new Number ,Boolean 是 new Boolean() new String(),只不过,这种声明方式有歧义,而且不简洁,基本上没人用..
例如 new Array(1); 是声明一个长度为1 的数字 ,new Array(1,2);是声明一个长度为2 ,成员为数字1和2 的数字,
但是你发现没有,你没有办法通过 new Array()声明一个长度为1,且第一个成员为数字1的数组.. so ...

js数据类型的创建都是用var,不管是布尔型,数字和字符串等等,它会在你创建时跟据你的需求(当然数据必须符合你所需要的数据类型的规则)自动匹配,
例如 var a=1;它会被认为是数字类型,而var a="1";则被认为是字符串类型了

“javascript语言核心中的原始类型都包含内置构造函数”我个人觉得这句话是对js弱类型面向对象编程的一种诠释,采用java构造函数的理解方式它。
因为 在js 中,我们定义一个变量,比如: var param; 那么param 可以是任何对象的数据。就看你怎么用它而已,你在用的时候,
你指定它是什么类型他就是什么类型。

javascript 所有的变量的定义都是var

js的核心应该是一切皆对象,变量也可以理解成一种对象

一切皆变量,当然包括Function类
原始类型它指的是内置基本类型Number Object Date等 Function类
它是想说通过prototype,为原有类型进行扩展
String.prototype.contains=function(){} 这样就为String类型实例添加了一个功能叫cotains

js是面向对象的语言,万事万物皆对象,定义一个变量的时候实际上也相当于创建一个对象,创建对象的话就要有构造函数了

三大包装类,你需要看看

js是弱类型语言,构造的时候不用指定类型,统一都是var

这是因为有包装类,例如定义 var a=[1,2,3]; a.length =3 ; a本来是没有方法length。但他经过原始类型包装,隐式的var a =new Array();就能调用length方法