资讯专栏INFORMATION COLUMN

JS的内置对象系列:Array(一)

张红新 / 1348人阅读

摘要:日常开发过程中,发现自己对很多原生方法都不知道,有些早已实现的方法,却傻乎乎自己去实现,因此萌生了总结和练习内置对象方法的想法。

日常开发过程中,发现自己对很多原生方法都不知道,有些早已实现的方法,却傻乎乎自己去实现,因此萌生了总结和练习JS内置对象方法的想法。
以下内容可能并不有趣,请谨慎观看?,参考自MDN

Array对象的属性

Array.length
这个大家都再熟悉不过啦,表示数组长度~

Array.prototype
数组对象的原型~

Array对象的内置方法

Array.prototype.copyWithin(target,start,end)
该方法解释起来似乎不太好描述,简单来说,copyWithin用于把从目标数组Array拷贝一部分出来,并把这一 部分放入target指向的位置(target,start,end都为整数),而且不会改变数组长度!!!也就是说,如果拷贝的那部分放入新数组时,如果长度超出原数组长度,那么多余长度的那部分会被忽略,不会继续加入到新数组中
示例代码:

代码中有一段注释,也是比较关键的一点,该函数做的操作是把拷贝出来的数据替换掉target所指位置的原来的元素,注意,是替换,原来target所在位置的元素在新数组中不再存在!!

Array.prototype.concat()
该方法用于连接多个数组或者非数组值,并且返回一个新数组。
具体看示例:

该方法的参数有一点需要解释,传入的多个参数中,如果是数组类型,则将它的元素复制一份并push到新数组中,若是其他类型,则直接当作元素push到新数组中。重点:concat的运算过程是重新复制一份内容传入新数组,因此新数组和旧数组的内存地址是不同的,对新数组做的改变并不会影响到原来的数组,但是!注意这个但是!我说三遍但是!这条原则是基于所有数组元素都是基本类型,如果说某一个元素是引用类型,那么concat所复制的也只不过是这个引用类型的一个引用,指向的是同一个内存地址!总结:新数组的内存地址和旧数组不一样,但是新数组内引用类型元素和旧数组内相对的那个引用类型元素是指向同一内存地址!,PS:最后,假如你的参数和旧数组都不含有引用类型,你可以使用concat来进行数组深度拷贝~

Array.of(element0[, element1[, ...[, elementN]]])
该方法用于创建一个新的Array实例,传入的参数将依次成为新数组的元素。该方法和数组的构造函数区别在于,Array(5)返回[,,,,],而Array.of(5)返回[5]请看示例代码:

Array.isArray(obj)
不多说了,判断输入的参数obj是否是数组类型,如果是,返回true,否则返回
false

Array.from(arrayLike[, mapFn[, thisArg]])
该方法为ES2015新增的方法,返回一个新的数组对象,其参数有三个:
第一个参数

  为数组类型或者类数组类型的对象,是必选参数,`arraylike`,顾名思义,要与数组结构类似。一般来说,有以下几种情况:一个满足以`数字为键,并且拥有length属性的对象`,es6新增的数据结构`set` 和 `map`,当然别忘了`字符串对象`~,它当然也是`arraylike`~

第二个参数

   可选参数,一旦你指定了该参数,你的数据会经过该函数处理后再返回

第三个参数

可选参数,指定from方法运行时的this环境

上代码~~

    细心的你,可能还发现,新的数组去重了呢?!是咋回事呢?这和Array.from
    可没有关系噢,请移步 ES6 Set数据结构~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81765.html

相关文章

  • JS内置对象-Array数组对象些常用方法区分

    摘要:语法添加删除项目的位置要删除的项目数量要添加的第一个元素第二个第三个返回值被删除的项目,如果有的话其中,第二个参数如果设置为,则不会删除任何项目。 第一篇篇幅太长了,自己回顾都觉得有点伤神。。以后尽量多篇少字~ 首先简单介绍Array数组对象 什么是数组: 用单独的变量名存储一系列的值 如何创建数组:(有3种方法) 1、常规方式: var gyt=new Array(); gyt[0...

    zorro 评论0 收藏0
  • JavaScript原生对象及扩展

    摘要:注每个内置对象都是原生对象,一个内置的构造函数是一个内置的对象,也是一个构造函数。从对象返回月份。以毫秒设置对象。删除数组的第一个元素,返回值是删除的元素。对象属性创建该正则对象的构造函数。对象当以非构造函数形式被调用时,等同于。 内置对象与原生对象 内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后者包括...

    hsluoyz 评论0 收藏0
  • 听飞狐聊JavaScript设计模式系列01

    摘要:前言大家好,小弟飞狐,爱学习,爱装逼,乐于分享,初来乍到,请多多关照。特别注意一下,函数在中是对象,不是一种数据类型,这可是世界的一等公民。和,和的关系又很暧昧,后面细说,要不然会晕菜。基本数据类型,,,,,这五种基本数据类型是按值访问的。 前言 大家好,小弟飞狐,爱学习,爱装逼,乐于分享,初来乍到,请多多关照(~ o ~)~zZ。出道几年,对JavaScript情有独钟,聊技术之前,...

    CHENGKANG 评论0 收藏0
  • 温故js系列(18)-对象&对象使用

    摘要:对象创建字面量方式构造函数方式也可以这样不过这样的话,为何不选择字面量方式字面量方式和方式的写法是等价的,返回的结果是同种类的对象。构造函数产生实例时,实例通过其对应原型对象的访问对应的构造函数对象。 前端学习:教程&模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试资源汇总 欢迎提issues斧正:对象&对象使用 Object对象 在 JavaScript 中,对...

    keke 评论0 收藏0
  • 窥探Underscore源码系列-开篇

    摘要:他指示了一个对象的属性,返回的将用来获得该属性对应的值在上面的分析中,我们知道,当传入的是一个函数时,还要经过一个叫的内置函数才能获得最终的所以此处的必然是优化回调的作用了。 开篇说明 对的,让你所见,又开始造轮子了。哈哈,造轮子我们是认真的~ 源码阅读是必须的,Underscore是因为刚刚学习整理了一波函数式编程,加上自己曾经没有太多阅读源码的经验,先拿Underscore练练手,...

    zorpan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<