获取JavaScript中的方法列表';s数组 var c=$(“”)[0].getContext('2d') 对于(c中的m){console.log(m)}

获取JavaScript中的方法列表';s数组 var c=$(“”)[0].getContext('2d') 对于(c中的m){console.log(m)},javascript,arrays,Javascript,Arrays,这将打印CanvasRenderingContext2D中的方法列表。如何对数组执行相同的操作。我想得到“splice”、“pop”、“push”等。显然,for(m in Array.prototype){console.log(m)}不起作用。大多数内置对象的方法和属性在内部被标记为不可枚举,因此它们不会在for in循环中枚举 ECMAScript 5有一个返回所有属性名数组的方法,因此您可以执行以下操作: var c=$('<canvas></canvas>')[

这将打印CanvasRenderingContext2D中的方法列表。如何对数组执行相同的操作。我想得到“splice”、“pop”、“push”等。显然,
for(m in Array.prototype){console.log(m)}
不起作用。

大多数内置对象的方法和属性在内部被标记为不可枚举,因此它们不会在
for in
循环中枚举

ECMAScript 5有一个返回所有属性名数组的方法,因此您可以执行以下操作:

var c=$('<canvas></canvas>')[0].getContext('2d')
for(m in c){console.log(m)}

但这并不是所有浏览器都支持的。

我不知道如何使用纯js实现。我通常在ant中加载下划线,它有一个函数,它有一个函数返回一个对象的所有函数

您可以检查下划线代码以检查它们是如何执行的。

执行以下操作:

Object.getOwnPropertyNames(Array.prototype)
输出:

for (m in Array) {
    console.log(m)
}

不过,这与获取数组实例/原型的属性不同,后者是不可枚举的。巧合的是,许多
Array.x
属性的名称与
Array.prototype.x
属性的名称相同。您从何处获得此输出?在FF4上它对我不起作用。
Array
的唯一标准属性是
Array.isArray
,这也是不可枚举的。您可能需要添加一个
if(typeof m=='function')
,这样您只能得到函数。在Chrome、IE8、FF 3.6上对我不起作用。我不知道你是怎么得到这个结果的。据我所能测试,数组构造函数没有属性。我使用的是Chrome9.0.597.10开发版。
from
type
implement
extend
alias
mirror
$family
$constructor
pop
push
reverse
shift
sort
splice
unshift
concat
join
slice
indexOf
lastIndexOf
filter
forEach
every
map
some
reduce
reduceRight
each
clone
invoke
clean
associate
link
contains
append
getLast
getRandom
include
combine
erase
empty
flatten
pick
hexToRgb
rgbToHex
overloadSetter
overloadGetter
hide
protect
apply
call
attempt
pass
delay
periodical
create
bind
bindWithEvent
run