मैंने सोचा था कि इस के रूप में आसान होगा के रूप में:कैसे निर्धारित करें कि मूल जावास्क्रिप्ट ऑब्जेक्ट में कोई संपत्ति/विधि है या नहीं?
if(typeof(Array.push) == 'undefined'){
//not defined, prototype a version of the push method
// Firefox never gets here, but IE/Safari/Chrome/etc. do, even though
// the Array object has a push method!
}
और यह फ़ायरफ़ॉक्स में ठीक काम करता है, लेकिन नहीं आईई, क्रोम, सफारी, ओपेरा में, वे लौट सभी गुण/देशी के तरीके इस परीक्षण का उपयोग करके ऐरे ऑब्जेक्ट को 'अपरिभाषित' के रूप में।
.hasOwnProperty (prop) विधि केवल उदाहरणों पर काम करती है ... इसलिए यह काम नहीं करती है, लेकिन परीक्षण और त्रुटि से मैंने देखा कि यह काम करता है।
//this works in Firefox/IE(6,7,8)/Chrome/Safari/Opera
if(typeof(Array().push) == 'undefined'){
//not defined, prototype a version of the push method
}
क्या निर्धारित करने के लिए एक संपत्ति/विधि एक मूल निवासी वस्तु/~ "जावास्क्रिप्ट कक्षा" ~ पर मौजूद है, या वहाँ यह करने के लिए एक बेहतर तरीका है इस सिंटैक्स का उपयोग के साथ कुछ गलत है?
दिलचस्प ... मैंने इसे पढ़ा। प्रोटीोटाइप केवल वस्तुओं के लिए नई गुण/विधियों को जोड़ने के लिए था, मैंने इसका उपयोग करने के बारे में नहीं सोचा था। जैसे प्रोटोटाइप http://www.devguru.com/technologies/JavaScript/10764.asp टाइपऑफ http://www.devguru.com/technologies/JavaScript/11529.asp – scunliffe
यह इसके लिए है, हां, लेकिन केवल इसके लिए नहीं । मैं यूयूआई रंगमंच (http://developer.yahoo.com/yui/theater/) में "उन्नत जावास्क्रिप्ट" पर डगलस क्रॉकफोर्ड की प्रस्तुति को देखने की अनुशंसा करता हूं - ऑब्जेक्ट प्रोटोटाइप कैसे काम करता है, इसमें कुछ बेहतरीन "हुड के नीचे" सामान है। –
यह मूल प्रोटोटाइप –