2015-12-14 13 views
5

मेरे पास एकाधिक गुणों वाला ऑब्जेक्ट है, प्रत्येक प्रॉपर्टी में एक स्ट्रिंग है जो एक स्ट्रिंग है। जब मैं प्रत्येक संपत्ति के मूल्यों को संयोजित करने का प्रयास करता हूं, तो यह नाएन लौटाता है।किसी ऑब्जेक्ट के गुणों के मानों को जोड़ना NaN (जावास्क्रिप्ट)

var urlProps = { 
    searchTerm: "searchSTUFF", 
    baseURL: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=10&exintro=&explaintext=&titles=%20&generator=search&gsrsearch=", 
    tailURL: "&rawcontinue=&callback=?", 
    finalURL: this.baseURL + this.searchTerm + this.tailURL 
} 

console.log(urlProps.finalURL); 
//NaN 

मैं यहां क्या गलत कर रहा हूं, या ऐसा करने का उचित तरीका क्या है?

उत्तर

6

अभी तक बनाया गया है।
this किसी भी मामले में ऑब्जेक्ट का प्रतिनिधित्व नहीं करेगा। आप इसे एक कन्स्ट्रक्टर या ऑब्जेक्ट विधि में उपयोग करेंगे।
परिणाम प्राप्त करने के लिए आपको यह करना होगा।

var urlProps = { 
    searchTerm: "searchSTUFF", 
    baseURL: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=10&exintro=&explaintext=&titles=%20&generator=search&gsrsearch=", 
    tailURL: "&rawcontinue=&callback=?", 
    finalURL: this.baseURL + this.searchTerm + this.tailURL 
} 
urlProps.finalURL = urlProps.baseURL + urlProps.searchTerm + urlProps.tailURL; 
+0

आह, मुझे नहीं पता था कि आप ऑब्जेक्ट लिटरेल्स में पिछले गुणों का संदर्भ नहीं दे सके। यह जानना वाकई बहुत अच्छा है। धन्यवाद! – Chirpizard

3

मैं समारोह का उपयोग कर

var urlProps = { 
    searchTerm: "searchSTUFF", 
    baseURL: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=10&exintro=&explaintext=&titles=%20&generator=search&gsrsearch=", 
    tailURL: "&rawcontinue=&callback=?", 
    finalURL: function() { return this.baseURL + this.searchTerm + this.tailURL; } 
} 

console.log(urlProps.finalURL()); 
//https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&e…=&titles=%20&generator=search&gsrsearch=searchSTUFF&rawcontinue=&callback=? 
1

जे एस इंजन this.baseUrl या this.searchTerm या this.tailUrl जब finalUrl निर्माण करने के लिए संदर्भ के प्रयोजनों के लिए जब तक 'अस्तित्व' क्योंकि वस्तु आप का निर्माण कर रहे नहीं है की कोशिश कर रहा नहीं मिल सकता है सुझाव है यह इंजन इसे खत्म कर देता है (} पर)।

यह काम करने के लिए, आप बनाने की जरूरत है सुनिश्चित करें कि वस्तु यह उल्लेख करने के लिए प्रयास करने से पहले निर्माण किया जा रहा समाप्त हो गया है: बिंदु जहां मूल्यों वस्तु नहीं है जोड़ की कोशिश कर रहे कम से

var urlProps = { 
    searchTerm: "searchSTUFF", 
    baseURL: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=10&exintro=&explaintext=&titles=%20&generator=search&gsrsearch=", 
    tailURL: "&rawcontinue=&callback=?" 
} 

// here it can find it... 
urlProps.finalURL = urlProps.baseURL + urlProps.searchTerm + urlProps.tailURL; 
1

this.baseURL, this.searchTerm और this.tailURL वस्तु शाब्दिक में उस बिंदु पर सभी undefined हैं। आप एक अलग बयान में अंतिम URL उत्पन्न करने के लिए है:

var urlProps = { 
    searchTerm: "searchSTUFF", 
    baseURL: "https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=10&exintro=&explaintext=&titles=%20&generator=search&gsrsearch=", 
    tailURL: "&rawcontinue=&callback=?" 
}; 
urlProps.finalURL = urlProps.baseURL + urlProps.searchTerm + urlProps.tailURL; 

वस्तु केवल वस्तु शाब्दिक साथ और window वस्तु को वस्तु शाब्दिक this अंक (या जो भी संदर्भ है) है, उसके अंदर बयान के बाद से मौजूद है वस्तु बनाने के लिए।

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