मेरे पास कुछ HTML है जिसमें JSON स्ट्रिंग है। डोम तैयार कॉलबैक पर में, मैं कुछ इस तरह है:मैं 'MyPbject पर संपत्ति MyProp1 कभी परिभाषित नहीं' चेतावनी को कैसे रोक सकता हूं?
MyObject = JSON.parse($('#TheJsonString').html());
मेरी कोड में बाद में, मैं कुछ इस बारे में:
var SomeVar = MyObject.MyProp1;
और फिर जब मैं गूगल बंद के माध्यम से कोड को चलाने संकलक, मैं चेतावनी
संपत्ति MyProp1 MyObject पर परिभाषित कभी नहीं मिलता है।
कोड को कैसे लिखा जाना चाहिए ताकि यह चेतावनी उत्पन्न न करे?
ठीक है धन्यवाद, अब यह काम करता है! कुल मिलाकर, क्या यह डॉट-नोटेशन बनाम ब्रैकेट नोटेशन का उपयोग करने के लिए "बेहतर" है या शैली/वरीयता का मामला है? इसके अलावा, मैं Google कंपाइलर का उपयोग करने की योजना बना रहा हूं और फिर जेएसक्रैम्बलर में संकलित कोड को फिर से भरना चाहता हूं। मुझे पता है कि यह रिवर्स इंजीनियरिंग को नहीं रोकेगा लेकिन मैं केवल समय खरीदना चाहता हूं। डबल obfuscation काम करेंगे? – frenchie
@frenchie आम तौर पर, ब्रैकेट/डॉट नोटेशन वरीयता का मामला है। हालांकि, क्लोजर कंपाइलर में, नामों को संरक्षित करने के लिए ब्रैकेट नोटेशन का उपयोग किया जाना चाहिए। हालांकि, संकलित आउटपुट में डॉट-नोटेशन का उपयोग किया जाता है। और हां, डबल obfuscation वास्तव में रिवर्स इंजीनियरिंग कठिन बना देगा। सुनिश्चित करें कि आप obfuscation से पहले/बाद में कोड के प्रदर्शन का परीक्षण करते हैं। –