内置构造函数的分类介绍
内置构造函数的分类
①ecmascript核心语法:有一部分内置构造函数:function、 object、 array、 string、 number、 boolean、 regexp、 error、 date
② 宿主环境:也会支持一部分构造函数 例如image。
function
该函数是一个内置构造函数,是用于创建函数的。
使用方式:
var fun = new function("a", "b", "return a + b");
等价方式1:
function fun(a, b) { return a + b }
等价方式2:
var fun = function(a, b) { return a + b }
特点:
除了最后一个参数,其他的都是作为形参存在。
当使用new function 时候 使用 函数名.name 输出的是anonymous (匿名)
使用其他两种方式, 函数名.name 输出的是函数名
函数.length 指的是函数的形参个数
函数.arguments指的是函数执行时候传入的实参个数。
regexp
该函数是一个内置构造函数,是用于创建正则表达式。
接受2个参数:
第一个参数:正则表达式的表达体, 是字符串
第二个参数: 正则表达式的修饰符: i(不区分大小写)、 m(多行文本)、 g(全局匹配)
// 字面量 var reg = /\s/g; // 构造函数 var reg1 = new regexp("\\s", "g");
注意: 因为字符串中也有转义字符, 所以需要多转义一次。
string
该函数是一个内置构造函数,它是string值类型的对应包装类型。
// 这是一个内置构造函数 它是 string值类型的对应包装类型 var str = "abcdefg"; // 转为对应的包装类型 var str_obj = new string(str);
平时我们用字符串的方法并不是在使用string类型的方法,而是在使用string对象的方法
当一个字符串调用方法的时候,其实编译器会默认转为对象,然后让该对象调用方法获取返回值。
// 举例解释字符串值类型调用string对象方法的步骤 var arr = str.split(""); // 1 转为对象 var str = new string("abcdefg"); // 2 str.split("") // 3 清空str 并返回结果 // 于是arr的结果就是一个数组 str保持不变。
boolean
该函数是一个内置构造函数,它是boolean值类型的对应包装类型。
// 这是一个内置构造函数 它是 bool值类型的对应包装类型 var f = false; // 转为对应的包装类型 var f_obj = new boolean(f)
注意: new boolean 得到的是一个对象,输出new boolean(f)是true 原始值是false; 想获得原始值就调用valueof()
number
该函数是一个内置构造函数,它是number值类型的对应包装类型。
var num = "3"; var num_obj = new number(num) // number 不是一个安全类, 不使用new 调用时候, 是作为类型转换函数使用 var num2 = "3a"; var num3 = number(num2); //nan
当new number的时候,得到的是一个number类型的对象,当number的时候,得到的是一个类型转换的结果。
注意:number 不是一个安全类, 不使用new 调用时候, 是作为类型转换函数使用