जावास्क्रिप्ट में किसी ऑब्जेक्ट के सभी विधियों को मुद्रित करने का कोई तरीका है?जावास्क्रिप्ट में किसी ऑब्जेक्ट के सभी विधियों को मुद्रित करने का कोई तरीका है?
उत्तर
ज़रूर:
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"));
यहां JS reflection पर एक पोस्ट है। ऐसा करना चाहिए जो आप खोज रहे हैं।
here से:
उदाहरण 1:
for (var myprop in navigator){
document.write(myprop+": "+navigator[myprop]+"<br>")
}
बस की जगह 'नाविक' जो कुछ भी वस्तु के साथ आप रुचि रखते हैं: इस उदाहरण "नाविक" वस्तु के सभी गुण, साथ ही उनकी मूल्यों बाहर लिखते हैं में और आपको जाने के लिए अच्छा होना चाहिए।
टिप्पणी अनुभाग में एंथनी द्वारा उल्लिखित अनुसार - यह सभी विशेषताओं को केवल प्रश्नों के अनुसार ही नहीं देता है।
ओह! वह मुझे उस भाषा में किसी प्रश्न का उत्तर देने और जवाब देने के लिए सिखाएगा जो मुझे नहीं पता। फिर भी, मुझे लगता है कि कोड उपयोगी है - बस इतना आवश्यक नहीं था।
यह सब गुण न सिर्फ सवाल के लिए कहा के रूप में तरीकों देता है। आईई पर यह केवल कुछ गुणों और किसी भी तरीके से लौटाता है। – AnthonyWJones
इस कोड पर एक हंस ले: -
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 समारोह के साथ कि क्या विधि एक है कि एक प्रोटोटाइप से विरासत में मिला दिया गया है साथ तरीकों के सेट देता है।
ध्यान दें कि यदि आप ब्राउज़र/डीओएम ऑब्जेक्ट जैसे संदर्भ से आपूर्ति की गई वस्तुओं पर इसका उपयोग करना चाहते हैं तो यह आईई काम नहीं करेगा।
चूंकि जावास्क्रिप्ट में विधियां केवल गुण हैं जो फ़ंक्शंस हैं, for..in लूप उन्हें अपवाद के साथ समझाएगा - यह अंतर्निहित विधियों की गणना नहीं करेगा। जहां तक मुझे पता है, अंतर्निहित तरीकों की गणना करने का कोई तरीका नहीं है। और आप किसी ऑब्जेक्ट पर अपनी विधियों या गुणों की घोषणा नहीं कर सकते हैं जो इस तरह से गणना नहीं कर रहे हैं।
यहाँ एक ES6
नमूना है।
// Get the Object's methods names:
function getMethodsNames(obj = this) {
return Object.keys(this)
.filter((key) => typeof this[key] === 'function');
}
// Get the Object's methods (functions):
function getMethods(obj = this) {
return Object.keys(this)
.filter((key) => typeof this[key] === 'function')
.map((key) => this[key]);
}
obj = this
, एक ES6 डिफ़ॉल्ट पैरामीटर है कि आप एक वस्तु में पारित कर सकते हैं या इसे this
लागू हो जाएगी।
Object.keys
Object
की अपनी समृद्ध गुणों का एक ऐरे देता है। window
ऑब्जेक्ट पर यह [..., 'localStorage', ...'location']
वापस आ जाएगा।
(param) => ...
, एक ES6 तीर समारोह है यह एक अंतर्निहित वापसी के साथ के लिए
function(param) {
return ...
}
एक आशुलिपि है।
Array.filter
परीक्षण (typeof this[key] === 'function'
) को पार करने वाले सभी तत्वों के साथ एक नई सरणी बनाता है।
Array.map
इस सरणी में प्रत्येक तत्व पर एक प्रदत्त फ़ंक्शन को कॉल करने के परिणामों के साथ एक नई सरणी बनाता है (this[key]
लौटाएं)।
यह उपयोगी है! एक सुधार: 'ob' के बजाय कार्यों 'obj' के अंदर उपयोग किया जाना चाहिए। –
यदि आप किसी ऑब्जेक्ट के अंदर क्या देखना चाहते हैं, तो आप सभी ऑब्जेक्ट की चाबियाँ प्रिंट कर सकते हैं। उनमें से कुछ चर, कुछ तरीकों से हो सकता है।
विधि, बहुत सही नहीं है, लेकिन यह बहुत जल्दी है:
console.log(Object.keys(obj));
यह बहुत उपयोगी है। एक शर्म की बात है कि आपके जवाब को केवल एक अपवित्र मिला (मुझसे, यय)! – Christian
- 1. क्या कोई फ़ंक्शन के साथ सभी जावास्क्रिप्ट विधियों को लपेटने का कोई तरीका है?
- 2. जावा में, क्या सभी तर्कों को किसी विधि में डंप करने का एक त्वरित तरीका है?
- 3. एम्बर ऑब्जेक्ट को सादे जावास्क्रिप्ट ऑब्जेक्ट में कनवर्ट करने का कोई तरीका है?
- 4. रूबी में, क्या सभी वैश्विक चर और कॉन्स्टेंट परिभाषित/पूर्वनिर्धारित मुद्रित करने का कोई तरीका है?
- 5. क्या जावास्क्रिप्ट में नेमस्पेसिंग करने का कोई "संक्षिप्त" तरीका है?
- 6. किसी ऑब्जेक्ट को C# कोड से जावास्क्रिप्ट तक पास करने का कोई तरीका?
- 7. क्या कोई ऑब्जेक्ट कुंजी ऑब्जेक्ट कुंजी के रूप में उपयोग करने का कोई तरीका है?
- 8. क्या कोई उपयोगकर्ता रूबी मणि इंस्टॉल करने के बाद संदेश मुद्रित करने का कोई तरीका है?
- 9. क्या सभी समय बहिष्कृत करने का कोई तरीका है?
- 10. जीएचसी में, मॉड्यूल के निर्यात को मुद्रित करने का कोई तरीका है?
- 11. क्या सभी संबंधित_तो एसोसिएशन सूचीबद्ध करने का कोई तरीका है?
- 12. क्या box2dWeb में console.log() पर किसी ऑब्जेक्ट का output.x आउटपुट करने का कोई तरीका है?
- 13. जावास्क्रिप्ट: उस ऑब्जेक्ट के भीतर ऑब्जेक्ट विधियों को कॉल करना
- 14. क्या कोई ऑब्जेक्ट का स्मृति पता एनएसएसटींग के रूप में प्राप्त करने का कोई तरीका है?
- 15. क्या जावास्क्रिप्ट ऑब्जेक्ट में अक्षीय कुंजी का उपयोग करने का कोई तरीका है?
- 16. जावास्क्रिप्ट में ऑब्जेक्ट सरणी कैसे मुद्रित करें?
- 17. क्या जावास्क्रिप्ट 'दिनांक' ऑब्जेक्ट में 21 अक्टूबर 2012 का प्रतिनिधित्व करने का कोई तरीका है?
- 18. क्या ब्लॉक के रूप में विधियों को पारित करने का कोई तरीका है?
- 19. पायथन अपवादों को मुद्रित करने का उचित तरीका क्या है?
- 20. छवियों को मुद्रित करने के लिए जावास्क्रिप्ट का उपयोग
- 21. किसी निजी विधि को आमंत्रित करने का कोई तरीका?
- 22. एक डू/जबकि/ब्लॉक में एक चर के प्रकार को मुद्रित करने का कोई तरीका?
- 23. ऑब्जेक्ट के सभी मूल प्रकार को कैसे मुद्रित करें?
- 24. सी में एक चर/सूचक के प्रकार मुद्रित करने का कोई तरीका है?
- 25. सी # विधियों का सीधे प्रतिनिधि के रूप में उपयोग करने का कोई तरीका है?
- 26. क्या किसी ऑब्जेक्ट में बदलावों की निगरानी करने का कोई तरीका है?
- 27. क्या जावास्क्रिप्ट में xsd के विरुद्ध xml को सत्यापित करने का कोई क्रॉस-प्लेटफ़ॉर्म तरीका है?
- 28. लुआ में किसी ऑब्जेक्ट के सभी गुणों को कैसे ढूंढें?
- 29. जावास्क्रिप्ट में बाइनरी डेटा पढ़ने का कोई तरीका है?
- 30. जावास्क्रिप्ट में सभी ईवेंट-श्रोता बाइंडिंग प्राप्त करने का कोई तरीका है?
कोशिश/पकड़ एक अच्छा दृष्टिकोण है। आईई में कुछ संपत्ति/विधियां हैं जो पहुंच पर त्रुटि देगी। – scunliffe
हाँ, मुझे लगता है कि कुछ फ़ायरफ़ॉक्स में भी हैं। – troelskn
ध्यान दें कि यह कुछ अंतर्निहित वस्तुओं पर काम नहीं करता है जैसे दिनांक: 'var a = new date(); console.log (टाइप करें ए, getMethods (ए)); ' रिटर्न: ' ऑब्जेक्ट [] '। – FGM