2014-11-12 2 views
0

내가 (텍스트 프레임)를 사용하는 경우 :객체의 모든 메서드와 속성을 얻을

b.selection().fit(FitOptions.frameToContent); 

예상대로 그 다음, 이것은 선택된 객체가 맞는 방법을 가지고 있다는 것을 의미 작동합니다.

내가 사용하는 경우 :

for (var property in b.selection()) { 
    b.println(property); 
} 

을 동일한 선택에 다음이 적합 방법을 인쇄하지 않습니다.

내가 이것을 사용하는 경우 :

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; 
} 


b.println(getMethods(b.selection())); 

그럼 내가 맞는 방법을 하나하지 않습니다. 그리고 나는 정말로 선택된 객체의 모든 메소드와 속성을 알고 싶습니다. 그럼 어떻게해야합니까?

답변

1

fit() 메서드가 있고 for-in-loop에 빛나지 않는 경우 열거 형이 아닌 속성입니다.

객체의 속성에 액세스하는 여러 가지 방법이 있습니다

:

var obj = b.selection(); 
for (var p in obj) { 
    console.log(p); // --> all enumerable properties of obj AND its prototype 
} 
Object.keys(obj).forEach(function(p) { 
    console.log(p); // --> all enumerable OWN properties of obj, NOT of its prototype 
}); 
Object.getOwnPropertyNames(obj).forEach(function(p) { 
    console.log(p); // all enumerable AND non-enumerable OWN properties of obj, NOT of its prototype 
}); 

당신이의 열거 할 수 없습니다 및 OBJ의 재산을 소유하지 이러한 방법 중 하나에 .fit()을 찾을 수없는 경우가 있지만, ob30의 프로토 타입에 어딘가에 앉는다. 그럼 당신은 할 수 있습니다 :

var prot = Object.getPrototypeOf(obj); 
Object.getOwnPropertyNames(prot).forEach(function(pp) { 
    console.log(pp); // --> all enumerable AND non-enumerable properties of obj's prototype 
}); 

종종 조금 더 프로토 타입 체인이 객체와 속성은 어딘가 깊은 거기에 앉아있다. 그럼 그냥 필요할 때마다 마지막 조각을 반복 :의 당신이 OBJ의 프로토 타입 prot.fit을 발견한다고 가정 해 봅시다 :

var prot2 = Object.getPrototypeOf(prot); 
Object.getOwnPropertyNames(prot2).forEach(/*...*/); 

가 완료하려면. prot.fit을 표시 오브젝트를 출력

console.log(Object.getOwnPropertyDescriptor(prot.fit)); 

을 그것을 열거 , 쓰기 및 아닌지 여부 구성 : 다음은 검사 할 수있다. Object.methods와 좀 더 FIND HERE.

0

시도 obj.reflect.methods 모든 방법을 얻으려면

관련 문제