我有一个具有多个属性的对象,每个属性都有一个字符串值。当我尝试连接每个属性的值时,它返回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
我在这里做错了什么,或者这样做的正确方法是什么?
答案 0 :(得分: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;
答案 1 :(得分: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=?
答案 2 :(得分:1)
在尝试构建this.baseUrl
时,JS引擎无法找到this.searchTerm
或this.tailUrl
或finalUrl
因为您正在构建的对象没有&#t;# 39;存在'为引用目的,直到引擎完成构建它(在}
)。
要使其工作,您需要确保在尝试引用它之前完成了对象的构建:
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;
答案 3 :(得分: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;
对象仅在具有对象文字的语句之后且在对象文本this
内指向window
对象(或任何上下文)而不是对象要创建的对象之后才存在。 / p>