return num != null ?(num < 0 ? this[num + this.length] : this[num]) : slice.call(this);
尤其是那句 slice.call
slice是数组的一个函数,this指向原数组。上面的写法等价于:this.slice(),this就是一个array。意思是当num == null的时候,返回整个数组的拷贝。
如果num不为NULL,且如果num的值超出范围,比如小于元素数量的负数或等于或大于元素的数量的数,那么它将返回undefined,不超过范围则返回单个元素;否则如果Nnum为NULL,则返回一个数组,包含对象或者数组的所有属性