개체의 모든 메서드를 인쇄하는 방법이 있습니까?
이 질문에 이미 답변이 있습니다.
JavaScript에서 개체의 모든 메서드를 인쇄하는 방법이 있습니까?
확실한:
function getMethods(obj) {
var result = [];
for (var id in obj) {
try {
if (typeof(obj[id]) == "function") {
result.push(id + ": " + obj[id].toString());
}
} catch (err) {
result.push(id + ": inaccessible");
}
}
return result;
}
그것을 사용하여 :
alert(getMethods(document).join("\n"));
객체 내부를보고 싶다면 모든 객체의 키를 인쇄 할 수 있습니다. 그들 중 일부는 변수가 될 수 있고 일부는 메소드가 될 수 있습니다.
이 방법은 정확하지는 않지만 정말 빠릅니다.
console.log(Object.keys(obj));
다음은 ES6
샘플입니다.
// Get the Object's methods names:
function getMethodsNames(obj = this) {
return Object.keys(obj)
.filter((key) => typeof obj[key] === 'function');
}
// Get the Object's methods (functions):
function getMethods(obj = this) {
return Object.keys(obj)
.filter((key) => typeof obj[key] === 'function')
.map((key) => obj[key]);
}
obj = this
ES6 기본 매개 변수입니다. Object를 전달하거나 기본값으로 this
.
Object.keys
Object
의 자체 열거 가능한 속성의 배열을 반환합니다 . window
객체 위에 [..., 'localStorage', ...'location']
.
(param) => ...
ES6 화살표 함수입니다.
function(param) {
return ...
}
암시 적으로 반환됩니다.
Array.filter
테스트를 통과 한 모든 요소가 포함 된 새 배열을 만듭니다 ( typeof obj[key] === 'function'
).
Array.map
이 배열의 모든 요소에 대해 제공된 함수를 호출 한 결과로 새 배열을 만듭니다 (return obj[key]
).
이 코드를 살펴보십시오.
function writeLn(s)
{
//your code to write a line to stdout
WScript.Echo(s)
}
function Base() {}
Base.prototype.methodA = function() {}
Base.prototype.attribA = "hello"
var derived = new Base()
derived.methodB = function() {}
derived.attribB = "world";
function getMethods(obj)
{
var retVal = {}
for (var candidate in obj)
{
if (typeof(obj[candidate]) == "function")
retVal[candidate] = {func: obj[candidate], inherited: !obj.hasOwnProperty(candidate)}
}
return retVal
}
var result = getMethods(derived)
for (var name in result)
{
writeLn(name + " is " + (result[name].inherited ? "" : "not") + " inherited")
}
getMethod 함수는 메소드가 프로토 타입에서 상속 된 메소드인지 여부와 함께 메소드 세트를 리턴합니다.
브라우저 / DOM 개체와 같은 컨텍스트에서 제공되는 개체에 이것을 사용하려는 경우 IE에서 작동하지 않습니다.
에서 여기 :
예 1 :이 예에서는 "navigator"개체의 모든 속성과 해당 값을 작성합니다.
for (var myprop in navigator){
document.write(myprop+": "+navigator[myprop]+"<br>")
}
'내비게이터'를 관심있는 개체로 바꾸면됩니다.
As mentioned by Anthony in the comments section - This returns all attributes not just methods as the question asked for.
Oops! That'll teach me to try and answer a question in a language I don't know. Still, I think the code is useful - just not what was required.
Since methods in JavaScript are just properties that are functions, the for..in loop will enumerate them with an exception - it won't enumerate built-in methods. As far as I know, there is no way to enumerate built-in methods. And you can't declare your own methods or properties on an object that aren't enumerable this way.
참고URL : https://stackoverflow.com/questions/152483/is-there-a-way-to-print-all-methods-of-an-object
'Programing' 카테고리의 다른 글
crontab을 사용하여 MySQL 데이터베이스의 압축 파일을 올바르게 생성하기위한 mysqldump 및 gzip 명령 (0) | 2020.11.18 |
---|---|
다른 역할의 Ansible 알림 핸들러 (0) | 2020.11.18 |
Python의 전용 변수 및 메서드 (0) | 2020.11.18 |
javascript int를 float로 변환 (0) | 2020.11.18 |
Webdav 또는 FTP 중 어떤 파일 액세스가 가장 좋습니까? (0) | 2020.11.18 |