2012-06-22 8 views
5

मेरे पास कुछ कंसोल.लॉग कमांड मेरी साइट के माध्यम से फैले हैं।क्या मैं अपना नाम उसी नाम से बना सकता हूं जो इसे अनुकूलित करने के लिए मौजूदा है?

क्या मेरे स्वयं के फ़ंक्शन के साथ console.log को ओवरराइड करना संभव है? मैं फ़ंक्शन को कस्टमाइज़ करना चाहता हूं ताकि यह केवल तभी लॉग हो जब कोई विशिष्ट चर सत्य पर सेट हो।

अंत में, मुझे अभी भी इस कंसोल से असली console.log को कॉल करने की आवश्यकता होगी।

धन्यवाद केविन

+2

यह जल्दी हो सकता है सिर्फ यह कोशिश करने के लिए। –

+0

जावास्क्रिप्ट कुछ भी नहीं है लेकिन अभी तक एक और प्रोग्रामिंग भाषा है। इसे ओवरराइडिंग का समर्थन करना चाहिए। –

+3

@UmeshA यह एक बुरा धारणा है। PHP, उदाहरण के लिए, ओवरराइडिंग फ़ंक्शन को अनुमति नहीं देता है। फंक्शन ओवरराइडिंग एक ऐसी अवधारणा है जो कुछ भाषाओं में प्राप्त करना मुश्किल है, खासतौर पर मूल वाले जहां कंपाइलर द्वारा किसी फ़ंक्शन नाम को स्थानांतरित किया जाता है। – Christian

उत्तर

4

बस एक बंद बनाते हैं, और एक स्थानीय चर में मूल console.log समारोह की दुकान।
फिर console.log ओवरराइड, और मूल फ़ंक्शन को कॉल आप अपनी जांच के बाद: http://jsfiddle.net/J46w8/

+0

अच्छी तरह से किया गया। मुझे आश्चर्य है, हालांकि, 'console'log' के लिए' यह 'पैरामीटर क्या होना चाहिए ... शायद' विंडो 'ऑब्जेक्ट? क्या यह कहीं भी दस्तावेज है? – voithos

+0

@ विथोस - 'यह 'कंसोल' ऑब्जेक्ट होगा, क्योंकि इसे इसकी विधि कहा जा रहा है। [यहां देखें] (http://jsfiddle.net/EbjPV/)। –

+0

आह, ठीक है। मुझे मूर्ख। _But_, यदि ऐसा है, तो आपको वास्तव में अपने '.apply() 'में' कंसोल 'भेजना चाहिए। यहां आपके पहेली के लिए एक अपडेट है जो दिखाता है कि 'यह' आपके नए फ़ंक्शन में कंसोल ऑब्जेक्ट नहीं है: [http://jsfiddle.net/voithos/J46w8/1/](http://jsfiddle.net/voithos/J46w8/1 /) – voithos

0

सहेजें वर्ष console.log() पहले:

(function(){ 
    var original = console.log; 

    console.log = function(){ 
     if (log) { // <-- some condition 
      original.apply(this, arguments); 
     } 
    }; 
})(); 

यहाँ बेला है।

var reallog = console.log; 
console.log = function(s) { 
    if(s == "a") { 
     reallog("a"); 
    } 
} 
console.log("b"); 
0
console.constructor.prototype.log = function(msg) { 
    alert(msg); 
}; 
संबंधित मुद्दे

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