Web前端
Javascript原生函数作为构造函数
关于数组(array)、对象(object)、函数(function)和正则表达式,我们通常喜欢以常量的形式来创建它们。实际上,使用常量和使用构造函数的效果是一样的(创建的值都是通过封装对象来包装)。 如前所述,应该尽量避免使用构造函数,除非十分必要,因为它们经常会产生意想不到的结果。 3.4.1 Array(..) var a = new Array( 1, 2, 3 ); a; // [1, 2, 3] var b = [1, 2, 3]; b; // [1, 2, 3] 构造函数Array(..) 不要求必须带new 关键字。不带时,它会被自动补上。 因此Array(1,2,3) 和new Array(1,2,3) 的效果是一样的。 Array 构造函数只带一个数字参数的时候,该参数会被作为数组的预设长度(length),而非只充当数组中的一个元素。 这实非明智之举:一是容易忘记,二是容易出错。 更为关键的是,数组并没有预设长度这个概念。这样创建出来的只是一个空数组,只不过它的length 属性被设置成了指定的值。 如若一个数组没有任何单元,但它的length 属性中却显示有单元数量,这样奇特的数据结构会导致一些怪异的行为。而这一切都归咎于已被废止的旧特性(类似arguments 这样的类数组)。 3.4.2 Object(..)、Function(..) 和RegExp(..) 同样,除非万不得已,否则尽量不要使用 Object(..)/Function(..)/RegExp(..): var c = Read more…