Nodejs JS 怎样遍历 Array 的所有方法?
Nodejs JS 怎样遍历 Array 的所有方法?
for key in Array.prototype
这样也不能遍历… 哪些方法总要定义在一个地方的吧, 难道设定了 JS 不能访问?
我在 MDN 上看到的代码… 难道是 Firefox 专用的代码? https://developer.mozilla.org/en-US/docs/DOM/NodeList
for(prop in Array.prototype){
if(Array.prototype.hasOwnProperty(prop) && typeof(Array.prototype[prop]) === 'function')
NodeList[prop] = Array.prototype[prop];
}
在 Node.js 中遍历数组(Array)的方法可以使用多种方式。你的问题似乎更关注于如何遍历 Array.prototype
上的所有方法,而不是遍历数组本身。下面我会分别介绍这两种情况。
1. 遍历数组本身
遍历数组是最常见的操作之一,可以使用以下几种方法:
1.1 使用 for
循环
const arr = [1, 2, 3, 4];
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
1.2 使用 forEach
const arr = [1, 2, 3, 4];
arr.forEach((item) => {
console.log(item);
});
1.3 使用 for...of
循环
const arr = [1, 2, 3, 4];
for (const item of arr) {
console.log(item);
}
2. 遍历 Array.prototype
的所有方法
如果你想遍历 Array.prototype
上的所有方法,你可以使用 for...in
循环,并检查每个属性是否为函数。以下是代码示例:
for (const prop in Array.prototype) {
if (Array.prototype.hasOwnProperty(prop) && typeof Array.prototype[prop] === 'function') {
console.log(`Method: ${prop}`);
}
}
这段代码会列出 Array.prototype
上所有的函数(方法),如 push
, pop
, shift
, unshift
, slice
, splice
等等。
解释
for...in
循环:用于遍历对象的所有可枚举属性。hasOwnProperty
方法:确保我们只遍历Array.prototype
自身的属性,而不是继承来的属性。typeof
检查:确保我们只处理函数(方法)。
注意,这种方法不会遍历那些从原型链继承的方法(如 toString
或 valueOf
)。这些方法通常是通用的 JavaScript 对象方法,不是特定于数组的。
回去翻这份资料才找到… http://killdream.github.com/blog/2011/10/understanding-javascript-oop/#sec-1-8
Object.getOwnPropertyNames(mikhail)
// => [ 'name', 'age', 'gender', 'first_name', 'last_name' ]
不知道是不兼容性问题, 网上似乎不太推荐扩展 DOM… 算了先写…
Object.getOwnPropertyNames(Array.prototype).forEach (prop) ->
if Array.prototype[prop]?
if (typeof Array.prototype[prop]) is "function"
NodeList.prototype[prop] = Array.prototype[prop]
for in只能列出可枚举属性和方法
要在 Node.js 中遍历 Array
的所有方法,可以使用 for...in
循环。需要注意的是,这种方法会遍历原型链上的所有属性,包括非枚举属性和继承的属性。为了只获取数组的方法(即函数),我们可以添加一个条件来过滤出函数类型。
以下是一些常见的遍历 Array
方法的方式:
示例代码
// 创建一个空数组以测试原型上的方法
const arr = [];
// 使用 for...in 循环遍历 Array.prototype
for (let key in Array.prototype) {
// 确保属性是自身的,并且是函数
if (Array.prototype.hasOwnProperty(key) && typeof Array.prototype[key] === 'function') {
console.log(key);
}
}
// 输出结果:
// push
// pop
// shift
// unshift
// splice
// slice
// concat
// sort
// reverse
// indexOf
// lastIndexOf
// every
// some
// forEach
// map
// filter
// reduce
// reduceRight
解释
- for…in 循环:这种循环可以遍历对象的所有可枚举属性,包括从原型链上继承的属性。
- hasOwnProperty:确保我们只获取到当前对象(
Array.prototype
)自身拥有的属性,而不是从原型链上继承的属性。 - typeof Array.prototype[key] === ‘function’:确保我们只获取到函数类型的属性,因为
Array
的方法都是函数。
注意事项
for...in
循环会遍历原型链上的所有属性,因此最好结合hasOwnProperty
方法来过滤掉继承的属性。- 如果你需要对每个数组元素进行操作,可以使用
forEach
,map
,filter
等方法,而不是遍历Array.prototype
。
希望这些示例代码能帮助你理解如何在 Node.js 中遍历 Array
的所有方法。