如何获取所有适用方法的列表

时间:2016-04-21 08:58:01

标签: javascript

我刚刚开始学习JavaScript并且遇到了问题:我不知道如何检查我的变量到底能做些什么(例如,我如何管理字符串或数组)。在Python中,有非常有用的方法dir()help(),允许用户获取所有适用方法的列表,并了解如何使用它们:

>>>my_number = 1
>>>dir(my_number)

这将返回

['bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

我可以应用于my_number变量

的方法列表

然后我可以得到每种方法的描述:

>>>help(my_number.real)

Help on int object:

class int(object)
|  int(x=0) -> integer
|  int(x, base=10) -> integer
|
|  Convert a number or string to an integer, or return 0 if no arguments
|  are given.  If x is a number, return x.__int__().  For floating point
|  numbers, this truncates towards zero...

JavaScript中有没有类似的功能,所以我可以像console.log(getAllMethodsFor(myNumber))一样调用它?这可以大大简化语言学习过程......

3 个答案:

答案 0 :(得分:2)

您可以获取变量的属性并检查typeof属性是否为function

function getAllFunctions(myvar)
{
   var allMethods = [];
   for( var property in myvar)
   {
      if (typeof myvar[property] == "function")
      {
         allMethods.push(property);
      }
   }
   return allMethods ;
}

答案 1 :(得分:2)

没有任何内置功能,但易于编写:



function dir(obj) {

    if(obj === null)
        return [];

    var uniq = a => a.filter((x, i) => a.indexOf(x) === i);

    return uniq(dir(Object.getPrototypeOf(obj)).concat(
        Object.getOwnPropertyNames(obj).filter(p => typeof obj[p] === 'function')
    ));

}

document.write(dir(1))
document.write("<hr>");
document.write(dir("abc"))
&#13;
&#13;
&#13;

关于help,也没有这样的事情,但在谷歌中输入mdn <method name>通常可以解决问题。

答案 2 :(得分:2)

默认情况下没有这样的东西,但你可以通过迭代给定对象的属性来编写一个:

for (var prop in obj) {
    if (typeof obj[prop] == 'function') {
        console.log(prop);
    }
}

话虽如此,仍然缺少help()的综合文档字符串。通常在Javascript开发中,您可以阅读(希望)附带的文档和/或使用Chrome的Web Inspector等交互式控制台,以更类似GUI的方式检查对象。