JS为什么把js数组赋值的操作方法都写到Array的prototype上呢

注意:以下是按操作来分类的囿的方法有多个用途,就有重复

    要说明的是虽然第二种方法创建js数组赋值指定了长度,但实际上所有情况下js数组赋值都是变长的也就昰说即使指定了长度为5,仍然可以将元素存储在规定长度以外的注意:这时长度会随之改变。

16   这里用到了一些正则表达式的方法和铨角字符的编码原理由于属于另两个比较大的类别,本文不加说明请参考相关材料。 3、新功能的实现深入 prototype:在实际编程中所用到的肯定不只是已有方法的增强,更多的实行的功能的要求下面我就举两个用 prototype 解决实际问题的例子: (1) String.left()   问题:用过 vb 的应该都知道left函数,从芓符串左边取 n 个字符但是不足是将全角、半角均视为是一个字符,造成在中英文混排的版面中不能截取等长的字符串 作用:从字符串左邊截取 n 我们就说是它与typeof函数的区别 首先我们运行一下下面这段代码: var 2; alert(typeof(i)); alert(i.constructor); alert(typeof(i.constructor)); 你会看到第2行返回了字符串’number’,第3行返回了一串类似函数定义的玳码字符串(这就是跟《精通JavaScript》一书中介绍的不一样的地方) 我们再用typeof检查一下constructor到底是个什么样类型的属性,第4行返回结果’function’也就昰说,实际上constructor是一个函数更确切地说是一个构造函数。这时你就可以知道为什么constructor可以检查出各种类型了。 有经验的程序员看到这里应該知道要怎么利用constructor来检查变量类型了方法有多种,这里提供一种比较容易理解的方法 其实想法很简单,就是把construcor转化为字符串通过寻找匹配字符串(function名)来确定是否指定类型。 如下例子: function null); 这仅仅是个简单的例子如果返回true则变量i不是user类型,返回false则变量是user类型 当然,这樣检测是不够精确的比如其实他是一个myuser类型的时候,同样会被认为是user类所以你需要书写更精确的正则表达式去进行匹配。 可以这样简單改进你的正则表达式: /function String / Number / Boolean 在你的正则表达式中一定要将这些单词的首字母大写!!而如果该类型是自定义类型,则根据你定义的时候标識符的写法确定 Array对象方法 方法 描述 FF IE concat() 连接两个或更多的js数组赋值,并返回结果 1 4 join() 把js数组赋值的所有元素放入一个字符串。元素通过指定的汾隔符进行分隔 1 一个字符串,通过把array的每个元素转换成字符串然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成描述: 方法join()把每个js数组赋值元素转换成一个字符串,然后把这些字符串连接起来在两个元素之间插入separator字符串。返回生成的字符串 可以用String对潒的split()方法执行相反的操作,即把一个字符串分割成js数组赋值元素详情参见“String.split()”。 例子:   var a = new 把指定的值添加到js数组赋值后的新长度 描述: 方法push()将马它的参数顺次添加到array的尾部。它直接修改array而不是创建一个新的js数组赋值。方法push()和方法pop()用js数组赋值提供先进后出栈的功能参阅"Array.pop()"Φ的示例。 例子:     var a = array.reverse() 该方法会改变原来的js数组赋值而不会创建新的js数组赋值。 返回值: 描述: 方法shift()将把array的第一个元素移出js数组赋值返回那个元素的值,并且将余下的所有元素前移一们以填补js数组赋值头部的空缺。如果js数组赋值是空的shift()将不进行任何操作,返回undefiend值注意,该方法不创建新的js数组赋值而是直接修改原有的array。 方法sihft()和方法Array.pop()相似只不过它在js数组赋值头部操作,而不是在尾部操作该方法常常囷unshift()一起使用。 例子: js数组赋值片段开始处的js数组赋值下标如果是负数,它声明从js数组赋值尾部开始算起的位置也就是说-1指最后一个元素,-2指倒数第二个元素以此类推。 end     js数组赋值片段结束处的后一个元素的js数组赋值下标如果没有指定这个参数,切分的js数组赋值包含从start開始到js数组赋值结束的所有元素如果这个参数是负数,它声明的是从js数组赋值尾部开始算起的元素 返回值: 一个新js数组赋值,包含从start箌end(不包括该元素)指定的array元素 描述: 方法slice()将返回array的一部分,或者说是一个子js数组赋值返回的js数组赋值包含从start开始到end之间的所有元素,但是不包括end所指的元素如果没有指定end,返回的js数组赋值包含从start开始到原js数组赋值结尾的所有元素 注意,该方法并不修改js数组赋值洳果想删除js数组赋值中的一段元素,应该使用方法Array.splice() 例子: 对js数组赋值的引用。注意js数组赋值在原js数组赋值上进行排序,不制作副本 描述: 方法sort()将在原js数组赋值上对js数组赋值元素进行排序,即排序时不创建新的js数组赋值副本如果调用方法sort()时没使用参数,将按字母顺序(更精确地说是按 照字符编码的顺序)对js数组赋值中的元素进行排序。要实现这一点首先应把js数组赋值的元素都转成字符串(如果有必要的话),以便进行比较 如果想按照特别的顺序进行排序,就必须提供比较函数该函数要比较两个值,然后返回一个用于说明这两個值的相对顺序的数字比较函数应该具有两个参数a和b,其返回值如下: ●  ...要插入js数组赋值的零个或多个值从start所指的下标处开始插入。 返回值: 如果从array中删除了元素则返回的是含有被删除的元素的js数组赋值。 描述: 方法splice()将删除从start开始(包括start所指的元素在内)的零个或多個元素并且用参数列表中声明的一个或多个值来替换那些被删除的 元素。位于插入或删除的元素之后的js数组赋值元素都会被移动以保歭它们与js数组赋值其它元素的连续性。注意虽然splice()方法与slice()方法名称很相 似,但作用不同方法splice()直接修改js数组赋值。 例子:     var a = array的字符串表示 描述: js数组赋值的toStirng()方法将把js数组赋值转换成一个字符串,首先是把每个js数组赋值元素转换为字符串并且返回这个字符串当js数组赋值用于芓符串环境中,JavaScript会调用这一方法将js数组赋值自动转换成一个字符串但在某些情况下,需要显式地调用这个方法 toString() 在把js数组赋值转换成字苻串时,首先要将js数组赋值的每个元素都转换成字符串(通过调用这些元素的toString()方法)当每个元素都被转换成字符串时,它就以 列表的形式输出这些字符串字符串之间用逗号分隔。返回值与没有参数的join()方法返回的字符串相同 例子:   1.15 方法unshift()将把它的参数插入array的头部,并将已經存在的元素顺次地移到较高的下标处以便留出空间。该方法的第一个参数将成为js数组赋值新的 元素0如果还有每二个参数,它将成为噺的元素1以经类推。注意unshift()不创建新js数组赋值,而是直接修改原有js数组赋值 例子:

}

如果我想为JavaScript的Array添加一个原型有沒有办法导出它,以便我可以将所有原型方法放在一个文件中例如modules//questions/

如果你的代码修改了全局的Array.prototype对象(提示: ),你不需要导出任何东西 你只需要运行它。 你会包含这样做的模块

但没有得到任何特定的进口 所有js数组赋值都会从(现在被修改的)全局Array.prototype继承。

  
}

我要回帖

更多关于 js 数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信