2011-03-11 18 views
10

का उपयोग Ext.js या Sencha, कर की बात क्या है निम्नलिखित:Ext.apply बनाम बिंदु का लक्ष्य केवल लक्ष्य पर मूल्य निर्धारित करना क्या है?

Ext.apply(app.views, { 
     contactsList: new app.views.ContactsList(), 
     contactDetail: new app.views.ContactDetail(), 
     contactForm: new app.views.ContactForm() 
    }); 

के रूप में इस मानक जावास्क्रिप्ट का विरोध किया:

app.views.contactsList = new app.views.ContactsList(); 
app.views.contactDetail = new app.views.ContactDetail(); 
app.views.contactForm = new app.views.ContactForm(); 

वहाँ कोई अंतर है?

उत्तर

8

यह को एक तर्क के रूप में स्वीकार करने वाले कोड के लिए सुविधा विधि के रूप में अधिकतर है, और इसे मर्ज करने की आवश्यकता है। विलय ऑब्जेक्ट्स जावास्क्रिप्ट में एक आम उपयोग केस है, और इस प्रकार के सहायक अधिकांश ढांचे द्वारा कार्यान्वित किया जाता है। ($.extend jQuery, प्रोटोटाइप में Object.extend, MooTools में Object.append, आदि)

आपके मामले में, वहाँ थोड़ा अंतर, थोड़ा अधिक पठनीय कोड की पेशकश के अलावा अन्य है।

11

Ext.apply आम तौर पर अधिक सुविधाजनक है (और यदि संभवतः कम सक्रियण श्रृंखला लुकअप आवश्यक हैं, तो आपके उदाहरण में, हालांकि यह मामूली बिंदु है)। एक संस्करण Ext.applyIf भी है जो केवल स्रोत ऑब्जेक्ट के सदस्यों को लागू करता है जो लक्ष्य ऑब्जेक्ट में मौजूद नहीं हैं, जो कि अधिक उपयोगी है क्योंकि यह आपको मैन्युअल if() चेक के बोतलबंद से बचाता है। यह वास्तव में उपयोगी है, उदाहरण के लिए, कॉन्फ़िगरेशन ऑब्जेक्ट पर डिफ़ॉल्ट लागू करते समय, जिसमें पहले से ही उपयोगकर्ता या ऐप-डिफ़ाइंड गुण असाइन किए जा सकते हैं।

भविष्य पाठकों को स्वीकार कर लिया जवाब को देखने के लिए एक नोट: Ext भी Ext.extend जो वास्तव में एक वर्ग "से विरासत", के रूप में Ext.apply[If] जो केवल एक-दूसरे में एक वस्तु उदाहरण विलीन हो जाती है, या Ext.override जो ओवरराइड करता है करने के लिए विरोध का मतलब है (उपclassing के बिना) एक वर्ग परिभाषा। आपको जो चाहिए, उसके आधार पर बहुत सारे विकल्प।

1

यदि आप सर्वर से कॉन्फ़िगरेशन प्राप्त करने के लिए अजाक्स अनुरोधों का उपयोग करते हैं तो आपको Ext.apply की आवश्यकता है। क्योंकि खिड़की के बाद, अजाक्स प्रतिक्रियाएं बाद में प्राप्त की जाती हैं। आपके कोड का दूसरा भाग काम नहीं करेगा।