2015-12-14 16 views
5

Birden çok özelliğe sahip bir nesnem var, her özellik bir dizgi olan bir değere sahip. Her bir özelliğin değerlerini birleştirmeye çalıştığımda, NaN değerini döndürür.Nesnenin özelliklerinin birleşimini döndürür NaN (Javascript)

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 

Burada ne yapıyorum ya da bunu yapmanın doğru yolu nedir?

cevap

6

nesne değil sahiptir değerlerini birleştirmek için çalışıyoruz noktada henüz oluşturuldu.
Ayrıca this, nesneyi hiçbir durumda temsil etmeyecektir. Bunu bir kurucuda veya bir nesne yönteminde kullanırsınız.
İstediğiniz sonucu elde etmek için bunu yapmanız gerekir.

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

Ahh, Nesne hazırlamasında önceki özelliklere başvuruda bulunamayacağınız konusunda hiçbir fikrim yoktu. Bu bilmek gerçekten harika. Teşekkür ederim! – Chirpizard

3

Ben

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

JS motoru this.baseUrl veya this.searchTerm veya this.tailUrl oluşturmakta olduğunuz nesne yok çünkü referans amacıyla kadar için 'varım' finalUrl inşa etmeye çalışırken bulamıyorum fonksiyonunu kullanarak öneririm Motor onu (}'da) inşa ederek bitirir.

yapmanız gereken, bu işi yapmak için emin nesne ona bakın denemeden önce inşa ediliyor tamamladı:

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 ve this.tailURL hazır nesne bu noktada tüm undefined bulunmaktadır. Ayrı bir açıklamada nihai URL oluşturmak zorunda:

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; 

nesnesi, yalnızca edebi nesne ile ve window nesneye nesne değişmezi this puan (veya bağlam ne olursa olsun) olup içindeki beyanı sonra var yaratılacak nesneye.