连接对象属性的值将返回NaN(Javascript)

时间:2015-12-14 03:03:30

标签: javascript

我有一个具有多个属性的对象,每个属性都有一个字符串值。当我尝试连接每个属性的值时,它返回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

我在这里做错了什么,或者这样做的正确方法是什么?

4 个答案:

答案 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.searchTermthis.tailUrlfinalUrl因为您正在构建的对象没有&#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.baseURLthis.searchTermthis.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>