2016-04-21 61 views
1

我剛開始學習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

[如何顯示JavaScript對象中的所有方法?](http://stackoverflow.com/questions/2257993/how-to-display-all-methods-in-a-javascript-object)和[Use sinon .js創建一個基於間諜方法的「間諜對象」](http://stackoverflow.com/questions/12025035/use-sinon-js-to-create-a-spy-object-with-spy-方法 - 基於上一個實時的結構) – LoicTheAztec

回答

2

你可以得到一個變量的屬性,並檢查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 <method name>通常會訣竅。

2

有默認情況下沒有這樣的事情,但你可以簡單地通過迭代給定對象的屬性寫一個:

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

話雖如此,這仍然缺少集成文檔字符串help()。通常在Javascript開發中,您正在閱讀(希望)隨附的文檔和/或使用Chrome的Web Inspector等交互式控制檯以更類似於GUI的方式檢查對象。

相關問題