在阅读ECMAScript的文档的时候,有注意到它说,数组的push方法其实不仅限于在数组中使用,专门留作通用方法.难道是说,在一些类数组的地方也可以使用?而哪些是和数组非常相像的呢,大家或许一下子就可以想到就是Object对象.因为Array就是继承自Object的,可以用 [] instanceof Object,会发现返回的是true.当然大家都知道,这也不是什么新鲜事.那我们可以大胆尝试一下,如果我们将数组的push方法应用在对象上,会一个怎么样的表现呢?…
Array.prototype.push.apply(a,b) 时常看到在操作数组的时候有这样的写法: var a = [1,2,3]; var b = [4,5,6]; a.push.apply(a, b); console.log(a) //[1,2,3,4,5,6] 其实这样的写法等价于: var a = [1,2,3]; var b = [4,5,6]; Array.prototype.push.apply(a, b); console.log(a) //[1,2,3,4,5,6] 这样…
var arr = [] Array.prototype.push.call(arr,"a","b","c") <==> [].push.call(arr,"a","b","c" ) //结果arr= [a,b,c]…
摘抄与:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter 概述 filter() 方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组. 语法 var new_arrary = arr.filter(callback[, thisArg]) 参数 callback:用来测试数组的每个元素的函数.调用时使用参数 (element, index…
Array.prototype  属性表示 Array 构造函数的原型,并允许您向所有Array对象添加新的属性和方法. /* 如果JavaScript本身不提供 first() 方法, 添加一个返回数组的第一个元素的新方法. */ if(!Array.prototype.first) { Array.prototype.first = function() { console.log(`如果JavaScript本身不提供 first() 方法, 添加一个返回数组的第一个元素的新方法.`); r…
// constructor 属性是每个具有原型的对象的原型成员. // 这包括除 Global 和 Math 对象之外的所有内部 JavaScript 对象. // constructor 属性包含了对某种函数的引用,此种函数构造了特定对象的实例. var arr = new Array();   if (arr.constructor == Array) document.write("Object is an Array."); else document.write("…
例子: , , , ]; const reducer = (accumulator, currentValue) => accumulator + currentValue; // 1 + 2 + 3 + 4 console.log(array1.reduce(reducer)); // expected output: 10 // 5 + 1 + 2 + 3 + 4 console.log(array1.reduce(reducer, )); // expected output: 15 re…
[02][].slice和Array.prototype.slice 01,Array是一个构造函数.浏览器内置的特殊对象.   02,Array没有slice方法. 03,Array.prototype原型上有方法slice() 我们可以用Array.prototype.slice或者Array的实例[].slice都行,但不能Array.slice     04, Array.prototype.slice.call(arguments) 可以将类数组对象转成数组. 如: var a={le…
类数组对象:arguments js把传入到这个函数的全部参数存储在arguments里面,其实arguments也是个对象,而且是一个特殊的对象,它的属性名是按照传入参数的序列来的,第1个参数的属性名是’0’,第2个参数的属性名是’1’,以此类推,并且它还有length属性,存储的是当前传入函数参数的个数,很多时候我们把这种对象叫做类数组对象. 数组比类数组对象多了很多其他的方法,类数组对象只是长得像数组而已. 在arguments对象里面,数据是这样存储的: { length: 4, '0'…
背景 最近在看Redux源码,createStore用于注册一个全局store,其内部维护一个Listeren数组,存放state变化时所有的响应函数. 其中store.subscribe(listener)用于注册一个listener,同时返回一个unsubscribe方法,用于注销当前注册的listener. 源码中查询listener索引时用到了Array.indexOf方法,如下: 一直用indexOf做值类型数组的查询,故对于此种情况记录下 Array.prototype.indexO…