关于数组的一些新知识点

今天喵爷大人给我看了一个叫js规范的东西 实话说吧 看了这个教规范的 我才知道,之前我写的一些东西都是野路子,都是没有规范的~~受益良多啊~~

下面开始正文了 

首先  数组的复制

之前的做数组复制的时候,我都是用一个for循环,把要复制的数组复制一遍的。

var len = items.length;
var itemsCopy = [];
var i;
比如下面的
// bad
for (i = 0; i < len; i++) {
  itemsCopy[i] = items[i];
}
但是今天学到了一个新的方法 直接应用slice函数,就可以复制了
// good
itemsCopy = items.slice();

然后 我在进行动态加载的时候,一般都是利用字符串来加载的,比如
function inbox(messages) {
  items = '<ul>';

  for (i = 0; i < length; i++) {
    items += '<li>' + messages[i].message + '</li>';
  }

  return items + '</ul>';
}

这样不好,因为字符串太长的话,会影响性能的
这里推荐了一个写法
function inbox(messages) {
  items = [];

  for (i = 0; i < length; i++) {
    // use direct assignment in this case because we're micro-optimizing.
    items[i] = '<li>' + messages[i].message + '</li>';
  }

  return '<ul>' + items.join('') + '</ul>';
}
其中的join方法就是讲数组items里面的元素全部拼接起来,形成一个字符串
并且 在join后面的小括号里面,可以加上用什么东西来分隔每一个元素,

最后 看到一个叫类数组对象的东西
我查了一下,发现这个类数组对象其实是一个很鸡助的东西,
这里先说一下 当我们创建一个函数的时候,不仅,那个函数默认创建了一个prototype 
还创建了一个arguments,这个对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。这个arguments就是一个类数组对象
就好比

如果要将类数组转成数组的话 

function trigger() {
  var args = Array.prototype.slice.call(arguments);
  ...
}











 

posted on 2016-07-28 16:59  月落落  阅读(174)  评论(0编辑  收藏  举报

导航