2011-09-25 5 views
6

उदाहरण के लिए में एक वस्तु के सभी कार्यों को प्राप्त करें,जावास्क्रिप्ट

Math.mymfunc = function (x) { 
    return x+1; 
} 

एक संपत्ति माना जाएगा और जब मैं

for(var p in Math.__proto__) console.log(p) 

बारे में यह दिखाया जाएगा। लेकिन शेष गणित कार्य नहीं करेंगे। मैथ ऑब्जेक्ट के सभी कार्यों को मैं कैसे प्राप्त कर सकता हूं?

+0

बस उत्सुक, आपको इसकी आवश्यकता क्यों है? – zzzzBov

+0

'mymfunc' गणना में प्रकट नहीं होना चाहिए क्योंकि आप एक अलग वस्तु (' मठ 'बनाम' ऑब्जेक्ट.प्रोटोटाइप') का आकलन कर रहे हैं। यदि आप कंसोल में उस कोड को चला रहे हैं, तो ऐसा लगता है कि यह करता है, लेकिन वास्तव में कंसोल केवल असाइनमेंट का परिणाम प्रदर्शित कर रहा है। – user113716

+0

एक संभावित उपयोग - वस्तुओं में निर्मित जेएस के लिए प्रलेखन उपकरण। एक अन्य उपयोग - मठ ऑब्जेक्ट (एक कैलकुलेटर उदाहरण) के लिए यूआई का निर्माण – James

उत्तर

11

Object.getOwnPropertyNames(Math); है क्या आप के बाद कर रहे हैं।

यह सभी गुणों को लॉग करता है बशर्ते आप एक एक्मास्क्रिप्ट 5 अनुरूप ब्राउज़र से निपट रहे हों।

var objs = Object.getOwnPropertyNames(Math); 
for(var i in objs){ 
    console.log(objs[i]); 
} 
+0

यह काम करता है! अच्छा! – Andr

0

console.log(Math) काम करना चाहिए।

+1

सिवाय इसके कि आपको उनसे प्रोग्रामेटिक पहुंच नहीं मिलती है, जो मुझे कल्पना है कि ओपी क्या ढूंढ रहा है। – James

2

The specificationMath फ़ंक्शंस के साथ परिभाषित किए गए गुणों के साथ परिभाषित नहीं होता है। ऐसा लगता है कि अधिकांश कार्यान्वयन, इन कार्यों में DontEnum लागू करते हैं, जिसका अर्थ है कि वे for(i in Math) लूप के साथ पुन: सक्रिय होने पर ऑब्जेक्ट में दिखाई नहीं देंगे।

क्या मैं पूछ सकता हूं कि आपको इसके लिए क्या करना है? वहाँ कई कार्यों नहीं हैं, इसलिए यह बस एक सरणी में उन्हें अपने परिभाषित करने के लिए सबसे अच्छा हो सकता है:

var methods = ['abs', 'max', 'min', ...etc.]; 
3
var functionNames = []; 

Object.getOwnPropertyNames(obj).forEach(function(property) { 
    if(typeof obj[property] === 'function') { 
    functionNames.push(property); 
    } 
}); 

console.log(functionNames); 

ऐसे गुण भी कार्य हैं के नाम की एक सरणी देता है। स्वीकृत उत्तर आपको सभी गुणों के नाम देता है।

संबंधित मुद्दे