【问题标题】:How to get list of all applicable methods如何获取所有适用方法的列表
【发布时间】:2016-04-21 08:58:00
【问题描述】:

我刚开始学习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))?这可以显着简化语言学习的过程...

【问题讨论】:

标签: javascript


【解决方案1】:

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

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

【讨论】:

    【解决方案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"))

    关于help,也没有这样的东西,但是在谷歌中输入mdn &lt;method name&gt;通常可以解决问题。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多