我刚刚开始学习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))
一样调用它?这可以大大简化语言学习过程......
答案 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;
关于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的方式检查对象。